Skip to content

Commit 4e4d595

Browse files
craig[bot]ZhouXing19
andcommitted
Merge #154681
154681: sql: fix sorting in jsonb_path_query logic test with inverted index r=ZhouXing19 a=ZhouXing19 Previously, rows are only sorted by PK, thus rows with the same PK are returned in indeterministic order. This PR is to fix it. Fixes: #154648. Release note: None Co-authored-by: ZhouXing19 <[email protected]>
2 parents 564109b + 2bfe02e commit 4e4d595

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)