@@ -830,11 +830,139 @@ select '"XXX"'::jsonb @@ '#.$="XXX"';
830
830
f
831
831
(1 row)
832
832
833
+ --Unicode
834
+ select 'a\t = "dollar \u0024 character"'::jsquery;
835
+ jsquery
836
+ ------------------------------
837
+ "a\t" = "dollar $ character"
838
+ (1 row)
839
+
840
+ select '{ "a": "dollar \u0024 character" }'::jsonb @@ '* = "dollar \u0024 character"';
841
+ ?column?
842
+ ----------
843
+ t
844
+ (1 row)
845
+
846
+ select '{ "a": "dollar \u0024 character" }'::jsonb @@ '* = "dollar $ character"';
847
+ ?column?
848
+ ----------
849
+ t
850
+ (1 row)
851
+
852
+ select '{ "a": "dollar $ character" }'::jsonb @@ '* = "dollar \u0024 character"';
853
+ ?column?
854
+ ----------
855
+ t
856
+ (1 row)
857
+
858
+ select 'a\r = "\n\""'::jsquery;
859
+ jsquery
860
+ ----------------
861
+ "a\r" = "\n\""
862
+ (1 row)
863
+
864
+ select 'a\r = "\u0000"'::jsquery;
865
+ jsquery
866
+ ------------------
867
+ "a\r" = "\u0000"
868
+ (1 row)
869
+
870
+ select 'a\r = \u0000'::jsquery;
871
+ jsquery
872
+ ------------------
873
+ "a\r" = "\u0000"
874
+ (1 row)
875
+
876
+ select 'a\r = "\abcd"'::jsquery AS err;
877
+ ERROR: bad jsquery representation
878
+ LINE 1: select 'a\r = "\abcd"'::jsquery AS err;
879
+ ^
880
+ DETAIL: Escape sequence is invalid at or near "\a"
881
+ select 'a\r = "\\abcd"'::jsquery;
882
+ jsquery
883
+ ------------------
884
+ "a\r" = "\\abcd"
885
+ (1 row)
886
+
887
+ select 'a\r = "x\u0000"'::jsquery;
888
+ jsquery
889
+ -------------------
890
+ "a\r" = "x\u0000"
891
+ (1 row)
892
+
893
+ select 'a\r = x\u0000'::jsquery;
894
+ jsquery
895
+ -------------------
896
+ "a\r" = "x\u0000"
897
+ (1 row)
898
+
899
+ select 'a\r = "x\abcd"'::jsquery AS err;
900
+ ERROR: bad jsquery representation
901
+ LINE 1: select 'a\r = "x\abcd"'::jsquery AS err;
902
+ ^
903
+ DETAIL: Escape sequence is invalid at or near "\a"
904
+ select 'a\r = "x\\abcd"'::jsquery;
905
+ jsquery
906
+ -------------------
907
+ "a\r" = "x\\abcd"
908
+ (1 row)
909
+
910
+ select 'a\r = "x\u0000x"'::jsquery;
911
+ jsquery
912
+ --------------------
913
+ "a\r" = "x\u0000x"
914
+ (1 row)
915
+
916
+ select 'a\r = x\u0000x'::jsquery;
917
+ jsquery
918
+ --------------------
919
+ "a\r" = "x\u0000x"
920
+ (1 row)
921
+
922
+ select 'a\r = "x\abcdx"'::jsquery AS err;
923
+ ERROR: bad jsquery representation
924
+ LINE 1: select 'a\r = "x\abcdx"'::jsquery AS err;
925
+ ^
926
+ DETAIL: Escape sequence is invalid at or near "\a"
927
+ select 'a\r = "x\\abcdx"'::jsquery;
928
+ jsquery
929
+ --------------------
930
+ "a\r" = "x\\abcdx"
931
+ (1 row)
932
+
933
+ select 'a\r = "\u0000x"'::jsquery;
934
+ jsquery
935
+ -------------------
936
+ "a\r" = "\u0000x"
937
+ (1 row)
938
+
939
+ select 'a\r = \u0000x'::jsquery;
940
+ jsquery
941
+ -------------------
942
+ "a\r" = "\u0000x"
943
+ (1 row)
944
+
945
+ select 'a\r = "\abcdx"'::jsquery AS err;
946
+ ERROR: bad jsquery representation
947
+ LINE 1: select 'a\r = "\abcdx"'::jsquery AS err;
948
+ ^
949
+ DETAIL: Escape sequence is invalid at or near "\a"
950
+ select 'a\r = "\\abcdx"'::jsquery;
951
+ jsquery
952
+ -------------------
953
+ "a\r" = "\\abcdx"
954
+ (1 row)
955
+
956
+ select 'a\r = x"\\abcd"'::jsquery AS err;
957
+ ERROR: bad jsquery representation
958
+ LINE 1: select 'a\r = x"\\abcd"'::jsquery AS err;
959
+ ^
960
+ DETAIL: syntax error, unexpected STRING_P, expecting $end at or near """
833
961
---table and index
834
962
select count(*) from test_jsquery where (v->>'review_helpful_votes')::int4 > 0;
835
963
count
836
964
-------
837
- 653
965
+ 654
838
966
(1 row)
839
967
840
968
select count(*) from test_jsquery where (v->>'review_helpful_votes')::int4 > 19;
@@ -846,7 +974,7 @@ select count(*) from test_jsquery where (v->>'review_helpful_votes')::int4 > 19;
846
974
select count(*) from test_jsquery where (v->>'review_helpful_votes')::int4 < 19;
847
975
count
848
976
-------
849
- 984
977
+ 985
850
978
(1 row)
851
979
852
980
select count(*) from test_jsquery where (v->>'review_helpful_votes')::int4 >= 19;
@@ -858,7 +986,7 @@ select count(*) from test_jsquery where (v->>'review_helpful_votes')::int4 >= 19
858
986
select count(*) from test_jsquery where (v->>'review_helpful_votes')::int4 <= 19;
859
987
count
860
988
-------
861
- 987
989
+ 988
862
990
(1 row)
863
991
864
992
select count(*) from test_jsquery where (v->>'review_helpful_votes')::int4 = 19;
@@ -877,7 +1005,7 @@ select count(*) from test_jsquery where (v->>'review_helpful_votes')::int4 > 16
877
1005
select count(*) from test_jsquery where v @@ 'review_helpful_votes > 0';
878
1006
count
879
1007
-------
880
- 653
1008
+ 654
881
1009
(1 row)
882
1010
883
1011
select count(*) from test_jsquery where v @@ 'review_helpful_votes > 19';
@@ -889,7 +1017,7 @@ select count(*) from test_jsquery where v @@ 'review_helpful_votes > 19';
889
1017
select count(*) from test_jsquery where v @@ 'review_helpful_votes < 19';
890
1018
count
891
1019
-------
892
- 984
1020
+ 985
893
1021
(1 row)
894
1022
895
1023
select count(*) from test_jsquery where v @@ 'review_helpful_votes >= 19';
@@ -901,7 +1029,7 @@ select count(*) from test_jsquery where v @@ 'review_helpful_votes >= 19';
901
1029
select count(*) from test_jsquery where v @@ 'review_helpful_votes <= 19';
902
1030
count
903
1031
-------
904
- 987
1032
+ 988
905
1033
(1 row)
906
1034
907
1035
select count(*) from test_jsquery where v @@ 'review_helpful_votes = 19';
@@ -953,6 +1081,24 @@ select count(*) from test_jsquery where v @@ 'similar_product_ids && ["044018029
953
1081
4
954
1082
(1 row)
955
1083
1084
+ select count(*) from test_jsquery where v @@ 'customer_id = null';
1085
+ count
1086
+ -------
1087
+ 1
1088
+ (1 row)
1089
+
1090
+ select count(*) from test_jsquery where v @@ 'review_votes = true';
1091
+ count
1092
+ -------
1093
+ 1
1094
+ (1 row)
1095
+
1096
+ select count(*) from test_jsquery where v @@ 'product_group = false';
1097
+ count
1098
+ -------
1099
+ 1
1100
+ (1 row)
1101
+
956
1102
create index t_idx on test_jsquery using gin (v jsonb_bloom_value_ops);
957
1103
set enable_seqscan = off;
958
1104
explain (costs off) select count(*) from test_jsquery where v @@ 'review_helpful_votes > 0';
@@ -968,7 +1114,7 @@ explain (costs off) select count(*) from test_jsquery where v @@ 'review_helpful
968
1114
select count(*) from test_jsquery where v @@ 'review_helpful_votes > 0';
969
1115
count
970
1116
-------
971
- 653
1117
+ 654
972
1118
(1 row)
973
1119
974
1120
select count(*) from test_jsquery where v @@ 'review_helpful_votes > 19';
@@ -980,7 +1126,7 @@ select count(*) from test_jsquery where v @@ 'review_helpful_votes > 19';
980
1126
select count(*) from test_jsquery where v @@ 'review_helpful_votes < 19';
981
1127
count
982
1128
-------
983
- 984
1129
+ 985
984
1130
(1 row)
985
1131
986
1132
select count(*) from test_jsquery where v @@ 'review_helpful_votes >= 19';
@@ -992,7 +1138,7 @@ select count(*) from test_jsquery where v @@ 'review_helpful_votes >= 19';
992
1138
select count(*) from test_jsquery where v @@ 'review_helpful_votes <= 19';
993
1139
count
994
1140
-------
995
- 987
1141
+ 988
996
1142
(1 row)
997
1143
998
1144
select count(*) from test_jsquery where v @@ 'review_helpful_votes = 19';
@@ -1044,6 +1190,24 @@ select count(*) from test_jsquery where v @@ 'similar_product_ids && ["044018029
1044
1190
4
1045
1191
(1 row)
1046
1192
1193
+ select count(*) from test_jsquery where v @@ 'customer_id = null';
1194
+ count
1195
+ -------
1196
+ 1
1197
+ (1 row)
1198
+
1199
+ select count(*) from test_jsquery where v @@ 'review_votes = true';
1200
+ count
1201
+ -------
1202
+ 1
1203
+ (1 row)
1204
+
1205
+ select count(*) from test_jsquery where v @@ 'product_group = false';
1206
+ count
1207
+ -------
1208
+ 1
1209
+ (1 row)
1210
+
1047
1211
drop index t_idx;
1048
1212
create index t_idx on test_jsquery using gin (v jsonb_hash_value_ops);
1049
1213
set enable_seqscan = off;
@@ -1060,7 +1224,7 @@ explain (costs off) select count(*) from test_jsquery where v @@ 'review_helpful
1060
1224
select count(*) from test_jsquery where v @@ 'review_helpful_votes > 0';
1061
1225
count
1062
1226
-------
1063
- 653
1227
+ 654
1064
1228
(1 row)
1065
1229
1066
1230
select count(*) from test_jsquery where v @@ 'review_helpful_votes > 19';
@@ -1072,7 +1236,7 @@ select count(*) from test_jsquery where v @@ 'review_helpful_votes > 19';
1072
1236
select count(*) from test_jsquery where v @@ 'review_helpful_votes < 19';
1073
1237
count
1074
1238
-------
1075
- 984
1239
+ 985
1076
1240
(1 row)
1077
1241
1078
1242
select count(*) from test_jsquery where v @@ 'review_helpful_votes >= 19';
@@ -1084,7 +1248,7 @@ select count(*) from test_jsquery where v @@ 'review_helpful_votes >= 19';
1084
1248
select count(*) from test_jsquery where v @@ 'review_helpful_votes <= 19';
1085
1249
count
1086
1250
-------
1087
- 987
1251
+ 988
1088
1252
(1 row)
1089
1253
1090
1254
select count(*) from test_jsquery where v @@ 'review_helpful_votes = 19';
@@ -1136,4 +1300,22 @@ select count(*) from test_jsquery where v @@ 'similar_product_ids && ["044018029
1136
1300
4
1137
1301
(1 row)
1138
1302
1303
+ select count(*) from test_jsquery where v @@ 'customer_id = null';
1304
+ count
1305
+ -------
1306
+ 1
1307
+ (1 row)
1308
+
1309
+ select count(*) from test_jsquery where v @@ 'review_votes = true';
1310
+ count
1311
+ -------
1312
+ 1
1313
+ (1 row)
1314
+
1315
+ select count(*) from test_jsquery where v @@ 'product_group = false';
1316
+ count
1317
+ -------
1318
+ 1
1319
+ (1 row)
1320
+
1139
1321
RESET enable_seqscan;
0 commit comments