@@ -108,7 +108,6 @@ SELECT jsonb_path_query(data, 'strict $.aa.aaa.aaaa') FROM a
108
108
query empty
109
109
SELECT jsonb_path_query('{}', '$.a')
110
110
111
-
112
111
statement ok
113
112
CREATE TABLE b (j JSONB)
114
113
@@ -196,7 +195,6 @@ SELECT jsonb_path_query('[1, 2, 3, 4, 5]', '$[1 to 3, 2, 1 to 3]');
196
195
query empty
197
196
SELECT jsonb_path_query('[1, 2, 3, 4, 5]', '$[3 to 1]');
198
197
199
-
200
198
query T rowsort
201
199
SELECT jsonb_path_query('[1, 2, 3, 4, 5]', '$[4 to 4]');
202
200
----
@@ -255,7 +253,6 @@ SELECT jsonb_path_query('{"a": [1, 2, 3, 4, 5]}', 'strict $[3 to 1]');
255
253
query empty
256
254
SELECT jsonb_path_query('{"a": [1, 2, 3]}', '$.a.b');
257
255
258
-
259
256
statement error pgcode 2203A jsonpath member accessor can only be applied to an object
260
257
SELECT jsonb_path_query('{"a": [1, 2, 3]}', 'strict $.a.b');
261
258
@@ -613,6 +610,95 @@ SELECT jsonb_path_query('{"a": 5, "b": 10}', '(1.5 > 1.2 && (!($.a == 1) || $.b
613
610
----
614
611
true
615
612
613
+ query T rowsort
614
+ SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (1 == 1)');
615
+ ----
616
+ 1
617
+ 2
618
+ 3
619
+
620
+ query empty
621
+ SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (1 != 1)');
622
+
623
+ query T
624
+ SELECT jsonb_path_query('{"a": [1,2,3]}', 'strict $.a ? (1 == 1)');
625
+ ----
626
+ [1, 2, 3]
627
+
628
+ query empty
629
+ SELECT jsonb_path_query('{"a": [1,2,3]}', 'strict $.a ? (1 != 1)');
630
+
631
+ query T rowsort
632
+ SELECT jsonb_path_query('{"a": [{"b": 1, "c": "hello"}, {"b": 2, "c": "world"}, {"b": 1, "c": "!"}]}', '$.a[*] ? (@.b == 1)');
633
+ ----
634
+ {"b": 1, "c": "hello"}
635
+ {"b": 1, "c": "!"}
636
+
637
+ query empty
638
+ SELECT jsonb_path_query('{"a": [{"b": 1, "c": "hello"}, {"b": 2, "c": "world"}, {"b": 1, "c": "!"}]}', 'strict $.a ? (@.b == 1)');
639
+
640
+ query T rowsort
641
+ SELECT jsonb_path_query('{"a": [{"b": 1, "c": "hello"}, {"b": 2, "c": "world"}, {"b": 1, "c": "!"}]}', '$.a ? (@.b == 1)');
642
+ ----
643
+ {"b": 1, "c": "hello"}
644
+ {"b": 1, "c": "!"}
645
+
646
+ query T rowsort
647
+ SELECT jsonb_path_query('{"a": [[{"b": 1, "c": "hello"}, {"b": 2, "c": "world"}, {"b": 1, "c": "!"}], [{"b": 1, "c": "hello"}, {"b": 2, "c": "world"}, {"b": 1, "c": "!"}]]}', '$.a ? (@.b == 1)');
648
+ ----
649
+ [{"b": 1, "c": "hello"}, {"b": 2, "c": "world"}, {"b": 1, "c": "!"}]
650
+ [{"b": 1, "c": "hello"}, {"b": 2, "c": "world"}, {"b": 1, "c": "!"}]
651
+
652
+ query T rowsort
653
+ SELECT jsonb_path_query('{"a": [[{"b": 1, "c": "hello"}, {"b": 2, "c": "world"}, {"b": 1, "c": "!"}], [{"b": 1, "c": "hello"}, {"b": 2, "c": "world"}, {"b": 1, "c": "!"}]]}', '$.a[*] ? (@.b == 1)');
654
+ ----
655
+ {"b": 1, "c": "hello"}
656
+ {"b": 1, "c": "!"}
657
+ {"b": 1, "c": "hello"}
658
+ {"b": 1, "c": "!"}
659
+
660
+ query empty
661
+ SELECT jsonb_path_query('{"a": [[{"b": 1, "c": "hello"}, {"b": 2, "c": "world"}, {"b": 1, "c": "!"}], [{"b": 1, "c": "hello"}, {"b": 2, "c": "world"}, {"b": 1, "c": "!"}]]}', 'strict $.a ? (@.b == 1)');
662
+
663
+ query empty
664
+ SELECT jsonb_path_query('{"a": [[{"b": 1, "c": "hello"}, {"b": 2, "c": "world"}, {"b": 1, "c": "!"}], [{"b": 1, "c": "hello"}, {"b": 2, "c": "world"}, {"b": 1, "c": "!"}]]}', 'strict $.a[*] ? (@.b == 1)');
665
+
666
+ query T rowsort
667
+ SELECT jsonb_path_query('{"a": [1,2,3,4,5]}', '$.a ? (@ > 3)');
668
+ ----
669
+ 4
670
+ 5
671
+
672
+ query T rowsort
673
+ SELECT jsonb_path_query('{"a": [{"b": 1, "c": 10}, {"b": 2, "c": 20}, {"b": 3, "c": 30}]}', '$.a ? (@.c > 15)');
674
+ ----
675
+ {"b": 2, "c": 20}
676
+ {"b": 3, "c": 30}
677
+
678
+ query T rowsort
679
+ SELECT jsonb_path_query('{"a": [{"b": "x", "c": true}, {"b": "y", "c": false}, {"b": "z", "c": true}]}', '$.a ? (@.c == true)');
680
+ ----
681
+ {"b": "x", "c": true}
682
+ {"b": "z", "c": true}
683
+
684
+ query T
685
+ SELECT jsonb_path_query('{"c": {"a": 1, "b":1}}', '$.c ? ($.c.a == @.b)');
686
+ ----
687
+ {"a": 1, "b": 1}
688
+
689
+ query empty
690
+ SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (@ > 10)');
691
+
692
+ query empty
693
+ SELECT jsonb_path_query('{"a": [{"b": 1, "c": 10}, {"b": 2, "c": 20}]}', '$.a ? (@.c > 100)');
694
+
695
+ # when string literals are supported
696
+ # query T rowsort
697
+ # SELECT jsonb_path_query('{"data": [{"val": "a", "num": 1}, {"val": "b", "num": 2}, {"val": "a", "num": 3}]}'::jsonb, '$.data ? (@.val == "a")'::jsonpath);
698
+ # ----
699
+ # {"num": 1, "val": "a"}
700
+ # {"num": 3, "val": "a"}
701
+
616
702
# select jsonb_path_query('[1, 2, 3, 4, 5]', '$[-1]');
617
703
# select jsonb_path_query('[1, 2, 3, 4, 5]', 'strict $[-1]');
618
704
0 commit comments