@@ -75,11 +75,11 @@ CONTEXT: JSON data, line 1: ...
75
75
-- use octet_length here so we don't get an odd unicode char in the
76
76
-- output
77
77
SELECT octet_length('"\uaBcD"'::jsonb::text); -- OK, uppercase and lower case both OK
78
- octet_length
79
- --------------
80
- 5
81
- (1 row)
82
-
78
+ ERROR: unsupported Unicode escape sequence
79
+ LINE 1: SELECT octet_length('"\uaBcD"'::jsonb::text);
80
+ ^
81
+ DETAIL: Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8.
82
+ CONTEXT: JSON data, line 1: ...
83
83
-- Numbers.
84
84
SELECT '1'::jsonb; -- OK
85
85
jsonb
@@ -1957,11 +1957,11 @@ SELECT * FROM jsonb_populate_recordset(row('def',99,NULL)::jbpop,'[{"a":[100,200
1957
1957
1958
1958
-- handling of unicode surrogate pairs
1959
1959
SELECT octet_length((jsonb '{ "a": "\ud83d\ude04\ud83d\udc36" }' -> 'a')::text) AS correct_in_utf8;
1960
- correct_in_utf8
1961
- -----------------
1962
- 10
1963
- (1 row)
1964
-
1960
+ ERROR: unsupported Unicode escape sequence
1961
+ LINE 1: SELECT octet_length((jsonb '{ "a": "\ud83d\ude04\ud83d\udc3...
1962
+ ^
1963
+ DETAIL: Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8.
1964
+ CONTEXT: JSON data, line 1: { "a":...
1965
1965
SELECT jsonb '{ "a": "\ud83d\ud83d" }' -> 'a'; -- 2 high surrogates in a row
1966
1966
ERROR: invalid input syntax for type json
1967
1967
LINE 1: SELECT jsonb '{ "a": "\ud83d\ud83d" }' -> 'a';
@@ -1988,11 +1988,11 @@ DETAIL: Unicode low surrogate must follow a high surrogate.
1988
1988
CONTEXT: JSON data, line 1: { "a":...
1989
1989
-- handling of simple unicode escapes
1990
1990
SELECT jsonb '{ "a": "the Copyright \u00a9 sign" }' as correct_in_utf8;
1991
- correct_in_utf8
1992
- -------------------------------
1993
- {"a": "the Copyright © sign"}
1994
- (1 row)
1995
-
1991
+ ERROR: unsupported Unicode escape sequence
1992
+ LINE 1: SELECT jsonb '{ "a": "the Copyright \u00a9 sign" }' as corr...
1993
+ ^
1994
+ DETAIL: Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8.
1995
+ CONTEXT: JSON data, line 1: { "a":...
1996
1996
SELECT jsonb '{ "a": "dollar \u0024 character" }' as correct_everywhere;
1997
1997
correct_everywhere
1998
1998
-----------------------------
@@ -2018,11 +2018,11 @@ SELECT jsonb '{ "a": "null \\u0000 escape" }' as not_an_escape;
2018
2018
(1 row)
2019
2019
2020
2020
SELECT jsonb '{ "a": "the Copyright \u00a9 sign" }' ->> 'a' as correct_in_utf8;
2021
- correct_in_utf8
2022
- ----------------------
2023
- the Copyright © sign
2024
- (1 row)
2025
-
2021
+ ERROR: unsupported Unicode escape sequence
2022
+ LINE 1: SELECT jsonb '{ "a": "the Copyright \u00a9 sign" }' ->> 'a'...
2023
+ ^
2024
+ DETAIL: Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8.
2025
+ CONTEXT: JSON data, line 1: { "a":...
2026
2026
SELECT jsonb '{ "a": "dollar \u0024 character" }' ->> 'a' as correct_everywhere;
2027
2027
correct_everywhere
2028
2028
--------------------
@@ -2118,6 +2118,62 @@ SELECT count(*) FROM testjsonb WHERE j ?& ARRAY['public','disabled'];
2118
2118
42
2119
2119
(1 row)
2120
2120
2121
+ SELECT count(*) FROM testjsonb WHERE ANY KEY OF j AS k SATISFIES ( k = '"pos"'::jsonb );
2122
+ count
2123
+ -------
2124
+ 203
2125
+ (1 row)
2126
+
2127
+ SELECT count(*) FROM testjsonb WHERE ANY KEY OF j AS k SATISFIES ( k = '"age"'::jsonb );
2128
+ count
2129
+ -------
2130
+ 2
2131
+ (1 row)
2132
+
2133
+ SELECT count(*) FROM testjsonb WHERE EACH KEY OF j AS k SATISFIES ( k = '"age"'::jsonb );
2134
+ count
2135
+ -------
2136
+ 120
2137
+ (1 row)
2138
+
2139
+ SELECT count(*) FROM testjsonb WHERE ANY VALUE OF j AS v SATISFIES ( v = '"CAB"'::jsonb );
2140
+ count
2141
+ -------
2142
+ 30
2143
+ (1 row)
2144
+
2145
+ SELECT count(*) FROM testjsonb WHERE ANY VALUE OF j AS v SATISFIES ( v = '"baz"'::jsonb );
2146
+ count
2147
+ -------
2148
+ 0
2149
+ (1 row)
2150
+
2151
+ SELECT count(*) FROM testjsonb WHERE ANY VALUE ANYWHERE OF j AS v SATISFIES ( v = '"baz"'::jsonb );
2152
+ count
2153
+ -------
2154
+ 3
2155
+ (1 row)
2156
+
2157
+ SELECT count(*) FROM testjsonb WHERE ANY ELEMENT ANYWHERE OF j AS v SATISFIES ( v = '"baz"'::jsonb );
2158
+ count
2159
+ -------
2160
+ 4
2161
+ (1 row)
2162
+
2163
+ SELECT count(*) FROM testjsonb WHERE ANY ELEMENT OF j->'array' AS e SATISFIES ( e = '"baz"'::jsonb );
2164
+ count
2165
+ -------
2166
+ 4
2167
+ (1 row)
2168
+
2169
+ SELECT count(*) FROM testjsonb WHERE ANY KEY OF j AS k SATISFIES (
2170
+ k->>0 = 'array' AND ANY ELEMENT OF j->(k->>0) AS e SATISFIES ( e = '"baz"'::jsonb )
2171
+ );
2172
+ count
2173
+ -------
2174
+ 4
2175
+ (1 row)
2176
+
2121
2177
CREATE INDEX jidx ON testjsonb USING gin (j);
2122
2178
SET enable_seqscan = off;
2123
2179
SELECT count(*) FROM testjsonb WHERE j @> '{"wait":null}';
0 commit comments