Skip to content

Commit 2bfe02e

Browse files
committed
sql: fix sorting in jsonb_path_query logic test with inverted index
Previously, rows are only sorted by PK, thus rows with the same PK are returned in indeterministic order. This PR is to fix it. Release note: None
1 parent 2a1771e commit 2bfe02e

File tree

1 file changed

+50
-50
lines changed

1 file changed

+50
-50
lines changed

pkg/sql/logictest/testdata/logic_test/jsonb_path_exists_index_acceleration

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -46,39 +46,39 @@ SELECT * FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b') ORDER BY a;
4646

4747
# To ensure the result is the same with or without leveraging the inverted index.
4848
query T
49-
SELECT jsonb_path_query(b, '$.a.b') FROM json_tab@primary WHERE jsonb_path_exists(b, '$.a.b') ORDER BY a;
49+
SELECT jsonb_path_query(b, '$.a.b') as jpq FROM json_tab@primary WHERE jsonb_path_exists(b, '$.a.b') ORDER BY a, jpq;
5050
----
5151
"c"
5252
[1, 2, 3, 4]
5353
{"c": "d"}
54-
{"x": "y"}
5554
"e"
55+
{"x": "y"}
5656
[]
5757
"c"
5858

5959
query T
60-
SELECT jsonb_path_query(b, '$.a.b') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b') ORDER BY a;
60+
SELECT jsonb_path_query(b, '$.a.b') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b') ORDER BY a, jpq;
6161
----
6262
"c"
6363
[1, 2, 3, 4]
6464
{"c": "d"}
65-
{"x": "y"}
6665
"e"
66+
{"x": "y"}
6767
[]
6868
"c"
6969

7070
query T
71-
SELECT jsonb_path_query(b, '$.a.b.c') FROM json_tab@primary WHERE jsonb_path_exists(b, '$.a.b.c') ORDER BY a;
71+
SELECT jsonb_path_query(b, '$.a.b.c') as jpq FROM json_tab@primary WHERE jsonb_path_exists(b, '$.a.b.c') ORDER BY a, jpq;
7272
----
7373
"d"
7474

7575
query T
76-
SELECT jsonb_path_query(b, '$.a.b.c') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b.c') ORDER BY a;
76+
SELECT jsonb_path_query(b, '$.a.b.c') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b.c') ORDER BY a, jpq;
7777
----
7878
"d"
7979

8080
query IT
81-
SELECT a, jsonb_path_query(b, '$') FROM json_tab@primary WHERE jsonb_path_exists(b, '$') ORDER BY a;
81+
SELECT a, jsonb_path_query(b, '$') as jpq FROM json_tab@primary WHERE jsonb_path_exists(b, '$') ORDER BY a, jpq;
8282
----
8383
1 {"a": "b"}
8484
2 [1, 2, 3, 4, "foo"]
@@ -92,38 +92,38 @@ SELECT a, jsonb_path_query(b, '$') FROM json_tab@primary WHERE jsonb_path_exists
9292
10 {"a": {"d": "e"}}
9393

9494
statement error index "foo_inv" is inverted and cannot be used for this query
95-
SELECT a, jsonb_path_query(b, '$') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$') ORDER BY a;
95+
SELECT a, jsonb_path_query(b, '$') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$') ORDER BY a, jpq;
9696

9797
statement error index "foo_inv" is inverted and cannot be used for this query
98-
SELECT a, jsonb_path_query(b, '$[*]') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$[*]') ORDER BY a;
98+
SELECT a, jsonb_path_query(b, '$[*]') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$[*]') ORDER BY a, jpq;
9999

100100
statement error index "foo_inv" is inverted and cannot be used for this query
101-
SELECT a, jsonb_path_query(b, '$[*][*]') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$[*][*]') ORDER BY a;
101+
SELECT a, jsonb_path_query(b, '$[*][*]') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$[*][*]') ORDER BY a, jpq;
102102

103103
query IT
104-
SELECT a, jsonb_path_query(b, '$.a[*].b') FROM json_tab@primary WHERE jsonb_path_exists(b, '$.a[*].b') ORDER BY a;
104+
SELECT a, jsonb_path_query(b, '$.a[*].b') as jpq FROM json_tab@primary WHERE jsonb_path_exists(b, '$.a[*].b') ORDER BY a, jpq;
105105
----
106106
3 "c"
107107
4 [1, 2, 3, 4]
108108
6 {"c": "d"}
109-
7 {"x": "y"}
110109
7 "e"
110+
7 {"x": "y"}
111111
8 []
112112
9 "c"
113113

114114
query IT
115-
SELECT a, jsonb_path_query(b, '$.a[*].b') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a[*].b') ORDER BY a;
115+
SELECT a, jsonb_path_query(b, '$.a[*].b') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a[*].b') ORDER BY a, jpq;
116116
----
117117
3 "c"
118118
4 [1, 2, 3, 4]
119119
6 {"c": "d"}
120-
7 {"x": "y"}
121120
7 "e"
121+
7 {"x": "y"}
122122
8 []
123123
9 "c"
124124

125125
query IT
126-
SELECT a, jsonb_path_query(b, '$.a') FROM json_tab@primary WHERE jsonb_path_exists(b, '$.a') ORDER BY a;
126+
SELECT a, jsonb_path_query(b, '$.a') as jpq FROM json_tab@primary WHERE jsonb_path_exists(b, '$.a') ORDER BY a, jpq;
127127
----
128128
1 "b"
129129
3 {"b": "c", "d": "e"}
@@ -138,7 +138,7 @@ SELECT a, jsonb_path_query(b, '$.a') FROM json_tab@primary WHERE jsonb_path_exis
138138
# To show that adding jsonb_path_exists filter with the same path does
139139
# not change the result.
140140
query IT
141-
SELECT a, jsonb_path_query(b, '$.a') FROM json_tab@primary ORDER BY a;
141+
SELECT a, jsonb_path_query(b, '$.a') as jpq FROM json_tab@primary ORDER BY a, jpq;
142142
----
143143
1 "b"
144144
3 {"b": "c", "d": "e"}
@@ -151,7 +151,7 @@ SELECT a, jsonb_path_query(b, '$.a') FROM json_tab@primary ORDER BY a;
151151
10 {"d": "e"}
152152

153153
query IT
154-
SELECT a, jsonb_path_query(b, '$.a') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a') ORDER BY a;
154+
SELECT a, jsonb_path_query(b, '$.a') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a') ORDER BY a, jpq;
155155
----
156156
1 "b"
157157
3 {"b": "c", "d": "e"}
@@ -164,29 +164,29 @@ SELECT a, jsonb_path_query(b, '$.a') FROM json_tab@foo_inv WHERE jsonb_path_exis
164164
10 {"d": "e"}
165165

166166
query IT
167-
SELECT a, jsonb_path_query(b, '$.a[*]') FROM json_tab@primary WHERE jsonb_path_exists(b, '$.a[*]') ORDER BY a;
167+
SELECT a, jsonb_path_query(b, '$.a[*]') as jpq FROM json_tab@primary WHERE jsonb_path_exists(b, '$.a[*]') ORDER BY a, jpq;
168168
----
169169
1 "b"
170170
3 {"b": "c", "d": "e"}
171171
4 {"b": [1, 2, 3, 4]}
172172
5 {}
173173
6 {"b": {"c": "d"}, "d": "e"}
174-
7 {"b": {"x": "y"}}
175174
7 {"b": "e"}
175+
7 {"b": {"x": "y"}}
176176
8 {"b": []}
177177
9 {"b": "c"}
178178
10 {"d": "e"}
179179

180180
query IT
181-
SELECT a, jsonb_path_query(b, '$.a[*]') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a[*]') ORDER BY a;
181+
SELECT a, jsonb_path_query(b, '$.a[*]') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a[*]') ORDER BY a, jpq;
182182
----
183183
1 "b"
184184
3 {"b": "c", "d": "e"}
185185
4 {"b": [1, 2, 3, 4]}
186186
5 {}
187187
6 {"b": {"c": "d"}, "d": "e"}
188-
7 {"b": {"x": "y"}}
189188
7 {"b": "e"}
189+
7 {"b": {"x": "y"}}
190190
8 {"b": []}
191191
9 {"b": "c"}
192192
10 {"d": "e"}
@@ -201,81 +201,81 @@ INSERT INTO json_tab VALUES
201201
(15, '{"a": [{"b": [{"x": {"y": {"znull": null}}}, {"x": {"y": {"znull": [null, "y1"]}}}]}]}')
202202

203203
query IT
204-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "y")') FROM json_tab ORDER BY a;
204+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "y")') as jpq FROM json_tab ORDER BY a, jpq;
205205
----
206206
11 {"x": {"y": {"z": "y"}}}
207207
11 {"x": {"y": {"z": ["y", "yuu"]}}}
208208

209209
query IT
210-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "y")') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.z == "y")') ORDER BY a;
210+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "y")') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.z == "y")') ORDER BY a, jpq;
211211
----
212212
11 {"x": {"y": {"z": "y"}}}
213213
11 {"x": {"y": {"z": ["y", "yuu"]}}}
214214

215215
# Path exists but the final value doesn't match any row.
216216
query IT
217-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "z")') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.z == "z")') ORDER BY a;
217+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "z")') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.z == "z")') ORDER BY a, jpq;
218218
----
219219

220220
query IT
221-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == true)') FROM json_tab ORDER BY a;
221+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == true)') as jpq FROM json_tab ORDER BY a, jpq;
222222
----
223223
12 {"x": {"y": {"ztrue": true}}}
224224
12 {"x": {"y": {"ztrue": [true, "y1"]}}}
225225

226226
query IT
227-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == true)') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.ztrue == true)') ORDER BY a;
227+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == true)') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.ztrue == true)') ORDER BY a, jpq;
228228
----
229229
12 {"x": {"y": {"ztrue": true}}}
230230
12 {"x": {"y": {"ztrue": [true, "y1"]}}}
231231

232232
# Path exists but the final value doesn't match any row.
233233
query IT
234-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == false)') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.ztrue == false)') ORDER BY a;
234+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == false)') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.ztrue == false)') ORDER BY a, jpq;
235235
----
236236

237237
query IT
238-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.zfalse == false)') FROM json_tab ORDER BY a;
238+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.zfalse == false)') as jpq FROM json_tab ORDER BY a, jpq;
239239
----
240240
13 {"x": {"y": {"zfalse": false}}}
241241
13 {"x": {"y": {"zfalse": [false, "y1"]}}}
242242

243243
query IT
244-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.zfalse == false)') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.zfalse == false)') ORDER BY a;
244+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.zfalse == false)') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.zfalse == false)') ORDER BY a, jpq;
245245
----
246246
13 {"x": {"y": {"zfalse": false}}}
247247
13 {"x": {"y": {"zfalse": [false, "y1"]}}}
248248

249249
# Path exists but the final value doesn't match any row.
250250
query IT
251-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.zfalse == true)') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.zfalse == true)') ORDER BY a;
251+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.zfalse == true)') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.zfalse == true)') ORDER BY a, jpq;
252252
----
253253

254254
query IT
255-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.zint == 10)') FROM json_tab ORDER BY a;
255+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.zint == 10)') as jpq FROM json_tab ORDER BY a, jpq;
256256
----
257257
14 {"x": {"y": {"zint": 10}}}
258258
14 {"x": {"y": {"zint": [10, "y1"]}}}
259259

260260
query IT
261-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.zint == 10)') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.zint == 10)') ORDER BY a;
261+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.zint == 10)') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.zint == 10)') ORDER BY a, jpq;
262262
----
263263
14 {"x": {"y": {"zint": 10}}}
264264
14 {"x": {"y": {"zint": [10, "y1"]}}}
265265

266266
# Path exists but the final value doesn't match any row.
267267
query IT
268-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.zint == 12)') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.zint == 12)') ORDER BY a;
268+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.zint == 12)') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.zint == 12)') ORDER BY a, jpq;
269269
----
270270

271271
query IT
272-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.znull == null)') FROM json_tab ORDER BY a;
272+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.znull == null)') as jpq FROM json_tab ORDER BY a, jpq;
273273
----
274274
15 {"x": {"y": {"znull": null}}}
275275
15 {"x": {"y": {"znull": [null, "y1"]}}}
276276

277277
query IT
278-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.znull == null)') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.znull == null)') ORDER BY a;
278+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.znull == null)') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.znull == null)') ORDER BY a, jpq;
279279
----
280280
15 {"x": {"y": {"znull": null}}}
281281
15 {"x": {"y": {"znull": [null, "y1"]}}}
@@ -305,7 +305,7 @@ SELECT a, jsonb_path_exists(b, '$.lllaaann.dddooo == 123123') FROM json_tab ORDE
305305

306306
# Result from this query is different from PG, tracked by #154588.
307307
query IT
308-
SELECT a, jsonb_path_query(b, '$.lllaaann.dddooo == 123123') FROM json_tab@primary WHERE jsonb_path_exists(b, '$.lllaaann.dddooo == 123123') ORDER BY a;
308+
SELECT a, jsonb_path_query(b, '$.lllaaann.dddooo == 123123') as jpq FROM json_tab@primary WHERE jsonb_path_exists(b, '$.lllaaann.dddooo == 123123') ORDER BY a, jpq;
309309
----
310310
1 null
311311
2 null
@@ -344,7 +344,7 @@ SELECT a, jsonb_path_exists(b, '$.a.b like_regex "hi.*"') FROM json_tab ORDER BY
344344

345345
# Result from this query is different from PG, tracked by #154589.
346346
query IT
347-
SELECT a, jsonb_path_query(b, '$.a.b like_regex "hi.*"') FROM json_tab@primary WHERE jsonb_path_exists(b, '$.a.b like_regex "hi.*"') ORDER BY a;
347+
SELECT a, jsonb_path_query(b, '$.a.b like_regex "hi.*"') as jpq FROM json_tab@primary WHERE jsonb_path_exists(b, '$.a.b like_regex "hi.*"') ORDER BY a, jpq;
348348
----
349349
1 null
350350
2 null
@@ -364,14 +364,14 @@ SELECT a, jsonb_path_query(b, '$.a.b like_regex "hi.*"') FROM json_tab@primary W
364364

365365
# For jsonb_path expression that we don't support for index acceleration, returns error.
366366
statement error index "foo_inv" is inverted and cannot be used for this query
367-
SELECT a, jsonb_path_query(b, '$.a.b like_regex "hi.*"') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b like_regex "hi.*"') ORDER BY a;
367+
SELECT a, jsonb_path_query(b, '$.a.b like_regex "hi.*"') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b like_regex "hi.*"') ORDER BY a, jpq;
368368

369369
statement error index "foo_inv" is inverted and cannot be used for this query
370-
SELECT a, jsonb_path_query(b, '$.lllaaann.dddooo == 123123') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.lllaaann.dddooo == 123123') ORDER BY a;
370+
SELECT a, jsonb_path_query(b, '$.lllaaann.dddooo == 123123') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.lllaaann.dddooo == 123123') ORDER BY a, jpq;
371371

372372
# Result from this query is different from PG, tracked by #154588.
373373
query IT
374-
SELECT a, jsonb_path_query(b, '$.lllaaann.dddooo == 123123') FROM json_tab@primary WHERE jsonb_path_exists(b, '$.lllaaann.dddooo == 123123') ORDER BY a;
374+
SELECT a, jsonb_path_query(b, '$.lllaaann.dddooo == 123123') as jpq FROM json_tab@primary WHERE jsonb_path_exists(b, '$.lllaaann.dddooo == 123123') ORDER BY a, jpq;
375375
----
376376
1 null
377377
2 null
@@ -391,35 +391,35 @@ SELECT a, jsonb_path_query(b, '$.lllaaann.dddooo == 123123') FROM json_tab@prima
391391

392392
# Without json_path_exists in the filter, hinted inverted index will not work.
393393
statement error index "foo_inv" is inverted and cannot be used for this query
394-
SELECT jsonb_path_query(b, '$.a.b') FROM json_tab@foo_inv ORDER BY a;
394+
SELECT jsonb_path_query(b, '$.a.b') as jpq FROM json_tab@foo_inv ORDER BY a, jpq;
395395

396396
# Multiple jsonb_path_exists in the filter. For all select clause to be
397397
# accelerated by the inverted index, use OR to concatenate the jsonb_path_exists
398398
# filters with the same json path expressions.
399399
query ITT
400-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "y")'), jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == true)') FROM json_tab ORDER BY a;
400+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "y")') as jpq1, jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == true)') as jpq2 FROM json_tab ORDER BY a, jpq1, jpq2;
401401
----
402402
11 {"x": {"y": {"z": "y"}}} NULL
403403
11 {"x": {"y": {"z": ["y", "yuu"]}}} NULL
404404
12 NULL {"x": {"y": {"ztrue": true}}}
405405
12 NULL {"x": {"y": {"ztrue": [true, "y1"]}}}
406406

407407
query ITT
408-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "y")'), jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == true)') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.z == "y")') ORDER BY a;
408+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "y")') as jpq1, jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == true)') as jpq2 FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.z == "y")') ORDER BY a, jpq1, jpq2;
409409
----
410410
11 {"x": {"y": {"z": "y"}}} NULL
411411
11 {"x": {"y": {"z": ["y", "yuu"]}}} NULL
412412

413413
query ITT
414-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "y")'), jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == true)') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.z == "y")') OR jsonb_path_exists(b, '$.a.b ? (@.x.y.ztrue == true)') ORDER BY a;
414+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "y")') as jpq1, jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == true)') as jpq2 FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b ? (@.x.y.z == "y")') OR jsonb_path_exists(b, '$.a.b ? (@.x.y.ztrue == true)') ORDER BY a, jpq1, jpq2;
415415
----
416416
11 {"x": {"y": {"z": "y"}}} NULL
417417
11 {"x": {"y": {"z": ["y", "yuu"]}}} NULL
418418
12 NULL {"x": {"y": {"ztrue": true}}}
419419
12 NULL {"x": {"y": {"ztrue": [true, "y1"]}}}
420420

421421
query ITT
422-
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "y")'), jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == true)') FROM json_tab ORDER BY a;
422+
SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "y")') as jpq1, jsonb_path_query(b, '$.a.b ? (@.x.y.ztrue == true)') as jpq2 FROM json_tab ORDER BY a, jpq1, jpq2;
423423
----
424424
11 {"x": {"y": {"z": "y"}}} NULL
425425
11 {"x": {"y": {"z": ["y", "yuu"]}}} NULL
@@ -428,31 +428,31 @@ SELECT a, jsonb_path_query(b, '$.a.b ? (@.x.y.z == "y")'), jsonb_path_query(b, '
428428

429429
# Test with multiple jsonb_path_exists concatenated with AND as the filter.
430430
query IT
431-
SELECT a, jsonb_path_query(b, '$.a.b') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b') ORDER BY a;
431+
SELECT a, jsonb_path_query(b, '$.a.b') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b') ORDER BY a, jpq;
432432
----
433433
3 "c"
434434
4 [1, 2, 3, 4]
435435
6 {"c": "d"}
436-
7 {"x": "y"}
437436
7 "e"
437+
7 {"x": "y"}
438438
8 []
439439
9 "c"
440-
11 [{"x": {"y": {"z": "y"}}}, {"x": {"y": {"z": "yuu"}}}, {"x": {"y": {"z": ["y", "yuu"]}}}, [{"x": "y"}], [[[{"x": "y"}]]], {"xx": [{"zz": "oo"}]}]
441440
11 "e"
441+
11 [{"x": {"y": {"z": "y"}}}, {"x": {"y": {"z": "yuu"}}}, {"x": {"y": {"z": ["y", "yuu"]}}}, [{"x": "y"}], [[[{"x": "y"}]]], {"xx": [{"zz": "oo"}]}]
442442
12 [{"x": {"y": {"ztrue": true}}}, {"x": {"y": {"ztrue": [true, "y1"]}}}]
443443
13 [{"x": {"y": {"zfalse": false}}}, {"x": {"y": {"zfalse": [false, "y1"]}}}]
444444
14 [{"x": {"y": {"zint": 10}}}, {"x": {"y": {"zint": [10, "y1"]}}}]
445445
15 [{"x": {"y": {"znull": null}}}, {"x": {"y": {"znull": [null, "y1"]}}}]
446446

447447
query IT
448-
SELECT a, jsonb_path_query(b, '$.a.d') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.d') ORDER BY a;
448+
SELECT a, jsonb_path_query(b, '$.a.d') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.d') ORDER BY a, jpq;
449449
----
450450
3 "e"
451451
6 "e"
452452
10 "e"
453453

454454
query ITT
455-
SELECT a, jsonb_path_query(b, '$.a.b'), jsonb_path_query(b, '$.a.d') FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b') AND jsonb_path_exists(b, '$.a.d') ORDER BY a;
455+
SELECT a, jsonb_path_query(b, '$.a.b'), jsonb_path_query(b, '$.a.d') as jpq FROM json_tab@foo_inv WHERE jsonb_path_exists(b, '$.a.b') AND jsonb_path_exists(b, '$.a.d') ORDER BY a, jpq;
456456
----
457457
3 "c" "e"
458458
6 {"c": "d"} "e"

0 commit comments

Comments
 (0)