@@ -1078,6 +1078,225 @@ select 'a = /* noindex */ 5'::jsquery;
10781078 "a" = 5
10791079(1 row)
10801080
1081+ --extract entries for index scan
1082+ SELECT gin_debug_query_path_value('!!!x(y(!(a=1) & !(b=2)) | !!(c=3)) & z = 5');
1083+ gin_debug_query_path_value
1084+ ----------------------------
1085+ AND +
1086+ z = 5 , entry 0 +
1087+ OR +
1088+ x.y.a = 1 , entry 1 +
1089+ x.y.b = 2 , entry 2 +
1090+
1091+ (1 row)
1092+
1093+ SELECT gin_debug_query_path_value('!#(x=1) & !*(y=1) & !%(z=1) ');
1094+ gin_debug_query_path_value
1095+ ----------------------------
1096+ NULL +
1097+
1098+ (1 row)
1099+
1100+ SELECT gin_debug_query_path_value('#(!x=1) & *(!y=1) & %(!z=1) ');
1101+ gin_debug_query_path_value
1102+ ----------------------------
1103+ NULL +
1104+
1105+ (1 row)
1106+
1107+ SELECT gin_debug_query_path_value('!#(!x=1) & !*(!y=1) & !%(!z=1) ');
1108+ gin_debug_query_path_value
1109+ ----------------------------
1110+ NULL +
1111+
1112+ (1 row)
1113+
1114+ SELECT gin_debug_query_path_value('#(x = "a" & y > 0 & y < 1 & z > 0)');
1115+ gin_debug_query_path_value
1116+ ----------------------------
1117+ #.x = "a" , entry 0 +
1118+
1119+ (1 row)
1120+
1121+ SELECT gin_debug_query_path_value('#(x = "a" & y /*-- index */ >= 0 & y < 1 & z > 0)');
1122+ gin_debug_query_path_value
1123+ -----------------------------
1124+ AND +
1125+ #.x = "a" , entry 0 +
1126+ #.y >= 0 , < 1 , entry 1 +
1127+
1128+ (1 row)
1129+
1130+ SELECT gin_debug_query_path_value('#(x /*-- noindex */ = "a" & y > 0 & y <= 1 & z /*-- index */ > 0)');
1131+ gin_debug_query_path_value
1132+ -----------------------------
1133+ AND +
1134+ #.y > 0 , <= 1 , entry 0 +
1135+ #.z > 0 , entry 1 +
1136+
1137+ (1 row)
1138+
1139+ SELECT gin_debug_query_path_value('x = 1 & (y /*-- index */ > 0 & y < 1 | z > 0)');
1140+ gin_debug_query_path_value
1141+ ----------------------------
1142+ AND +
1143+ x = 1 , entry 0 +
1144+ OR +
1145+ y > 0 , < 1 , entry 1 +
1146+ z > 0 , entry 2 +
1147+
1148+ (1 row)
1149+
1150+ SELECT gin_debug_query_path_value('%.x = 1');
1151+ gin_debug_query_path_value
1152+ ----------------------------
1153+ NULL +
1154+
1155+ (1 row)
1156+
1157+ SELECT gin_debug_query_path_value('*.x = "b"');
1158+ gin_debug_query_path_value
1159+ ----------------------------
1160+ NULL +
1161+
1162+ (1 row)
1163+
1164+ SELECT gin_debug_query_path_value('x && [1,2,3]');
1165+ gin_debug_query_path_value
1166+ ----------------------------
1167+ OR +
1168+ x.# = 1 , entry 0 +
1169+ x.# = 2 , entry 1 +
1170+ x.# = 3 , entry 2 +
1171+
1172+ (1 row)
1173+
1174+ SELECT gin_debug_query_path_value('x @> [1,2,3]');
1175+ gin_debug_query_path_value
1176+ ----------------------------
1177+ AND +
1178+ x.# = 1 , entry 0 +
1179+ x.# = 2 , entry 1 +
1180+ x.# = 3 , entry 2 +
1181+
1182+ (1 row)
1183+
1184+ SELECT gin_debug_query_path_value('x <@ [1,2,3]');
1185+ gin_debug_query_path_value
1186+ ----------------------------
1187+ NULL +
1188+
1189+ (1 row)
1190+
1191+ SELECT gin_debug_query_value_path('!!!x(y(!(a=1) & !(b=2)) | !!(c=3)) & z = 5');
1192+ gin_debug_query_value_path
1193+ ----------------------------
1194+ AND +
1195+ z = 5 , entry 0 +
1196+ OR +
1197+ x.y.a = 1 , entry 1 +
1198+ x.y.b = 2 , entry 2 +
1199+
1200+ (1 row)
1201+
1202+ SELECT gin_debug_query_value_path('!#(x=1) & !*(y=1) & !%(z=1) ');
1203+ gin_debug_query_value_path
1204+ ----------------------------
1205+ NULL +
1206+
1207+ (1 row)
1208+
1209+ SELECT gin_debug_query_value_path('#(!x=1) & *(!y=1) & %(!z=1) ');
1210+ gin_debug_query_value_path
1211+ ----------------------------
1212+ NULL +
1213+
1214+ (1 row)
1215+
1216+ SELECT gin_debug_query_value_path('!#(!x=1) & !*(!y=1) & !%(!z=1) ');
1217+ gin_debug_query_value_path
1218+ ----------------------------
1219+ NULL +
1220+
1221+ (1 row)
1222+
1223+ SELECT gin_debug_query_value_path('#(x = "a" & y > 0 & y < 1 & z > 0)');
1224+ gin_debug_query_value_path
1225+ ----------------------------
1226+ #.x = "a" , entry 0 +
1227+
1228+ (1 row)
1229+
1230+ SELECT gin_debug_query_value_path('#(x = "a" & y /*-- index */ >= 0 & y < 1 & z > 0)');
1231+ gin_debug_query_value_path
1232+ -----------------------------
1233+ AND +
1234+ #.x = "a" , entry 0 +
1235+ #.y >= 0 , < 1 , entry 1 +
1236+
1237+ (1 row)
1238+
1239+ SELECT gin_debug_query_value_path('#(x /*-- noindex */ = "a" & y > 0 & y <= 1 & z /*-- index */ > 0)');
1240+ gin_debug_query_value_path
1241+ -----------------------------
1242+ AND +
1243+ #.y > 0 , <= 1 , entry 0 +
1244+ #.z > 0 , entry 1 +
1245+
1246+ (1 row)
1247+
1248+ SELECT gin_debug_query_value_path('x = 1 & (y /*-- index */ > 0 & y < 1 | z > 0)');
1249+ gin_debug_query_value_path
1250+ ----------------------------
1251+ AND +
1252+ x = 1 , entry 0 +
1253+ OR +
1254+ y > 0 , < 1 , entry 1 +
1255+ z > 0 , entry 2 +
1256+
1257+ (1 row)
1258+
1259+ SELECT gin_debug_query_value_path('%.x = 1');
1260+ gin_debug_query_value_path
1261+ ----------------------------
1262+ %.x = 1 , entry 0 +
1263+
1264+ (1 row)
1265+
1266+ SELECT gin_debug_query_value_path('*.x = "b"');
1267+ gin_debug_query_value_path
1268+ ----------------------------
1269+ *.x = "b" , entry 0 +
1270+
1271+ (1 row)
1272+
1273+ SELECT gin_debug_query_value_path('x && [1,2,3]');
1274+ gin_debug_query_value_path
1275+ ----------------------------
1276+ OR +
1277+ x.# = 1 , entry 0 +
1278+ x.# = 2 , entry 1 +
1279+ x.# = 3 , entry 2 +
1280+
1281+ (1 row)
1282+
1283+ SELECT gin_debug_query_value_path('x @> [1,2,3]');
1284+ gin_debug_query_value_path
1285+ ----------------------------
1286+ AND +
1287+ x.# = 1 , entry 0 +
1288+ x.# = 2 , entry 1 +
1289+ x.# = 3 , entry 2 +
1290+
1291+ (1 row)
1292+
1293+ SELECT gin_debug_query_value_path('x <@ [1,2,3]');
1294+ gin_debug_query_value_path
1295+ ----------------------------
1296+ NULL +
1297+
1298+ (1 row)
1299+
10811300---table and index
10821301select count(*) from test_jsquery where (v->>'review_helpful_votes')::int4 > 0;
10831302 count
0 commit comments