@@ -419,6 +419,13 @@ EXPLAIN (COSTS OFF) SELECT * FROM array_qual.test WHERE a = ANY (array[array[100
419
419
Filter: (a = ANY ('{{100,200},{300,NULL}}'::integer[]))
420
420
(7 rows)
421
421
422
+ EXPLAIN (COSTS OFF) SELECT * FROM array_qual.test WHERE a = ANY (array[NULL, NULL]::int4[]);
423
+ QUERY PLAN
424
+ --------------------------
425
+ Result
426
+ One-Time Filter: false
427
+ (2 rows)
428
+
422
429
/*
423
430
* Test expr = ALL (...)
424
431
*/
@@ -573,6 +580,13 @@ EXPLAIN (COSTS OFF) SELECT * FROM array_qual.test WHERE a < ANY (array[NULL, 700
573
580
Filter: (a < ANY ('{NULL,700}'::integer[]))
574
581
(9 rows)
575
582
583
+ EXPLAIN (COSTS OFF) SELECT * FROM array_qual.test WHERE a < ANY (array[NULL, NULL]::int4[]);
584
+ QUERY PLAN
585
+ --------------------------
586
+ Result
587
+ One-Time Filter: false
588
+ (2 rows)
589
+
576
590
SET pg_pathman.enable = f;
577
591
NOTICE: RuntimeAppend, RuntimeMergeAppend and PartitionFilter nodes and some other options have been disabled
578
592
SELECT count(*) FROM array_qual.test WHERE a < ANY (array[NULL, 700]);
@@ -669,6 +683,13 @@ EXPLAIN (COSTS OFF) SELECT * FROM array_qual.test WHERE a < ALL (array[NULL, 700
669
683
One-Time Filter: false
670
684
(2 rows)
671
685
686
+ EXPLAIN (COSTS OFF) SELECT * FROM array_qual.test WHERE a < ALL (array[NULL, NULL]::int4[]);
687
+ QUERY PLAN
688
+ --------------------------
689
+ Result
690
+ One-Time Filter: false
691
+ (2 rows)
692
+
672
693
SET pg_pathman.enable = f;
673
694
NOTICE: RuntimeAppend, RuntimeMergeAppend and PartitionFilter nodes and some other options have been disabled
674
695
SELECT count(*) FROM array_qual.test WHERE a < ALL (array[NULL, 700]);
@@ -778,6 +799,13 @@ EXPLAIN (COSTS OFF) SELECT * FROM array_qual.test WHERE a > ANY (array[NULL, 700
778
799
-> Seq Scan on test_10
779
800
(6 rows)
780
801
802
+ EXPLAIN (COSTS OFF) SELECT * FROM array_qual.test WHERE a > ANY (array[NULL, NULL]::int4[]);
803
+ QUERY PLAN
804
+ --------------------------
805
+ Result
806
+ One-Time Filter: false
807
+ (2 rows)
808
+
781
809
SET pg_pathman.enable = f;
782
810
NOTICE: RuntimeAppend, RuntimeMergeAppend and PartitionFilter nodes and some other options have been disabled
783
811
SELECT count(*) FROM array_qual.test WHERE a > ANY (array[NULL, 700]);
@@ -894,6 +922,13 @@ EXPLAIN (COSTS OFF) SELECT * FROM array_qual.test WHERE a > ALL (array[NULL, 700
894
922
One-Time Filter: false
895
923
(2 rows)
896
924
925
+ EXPLAIN (COSTS OFF) SELECT * FROM array_qual.test WHERE a > ALL (array[NULL, NULL]::int4[]);
926
+ QUERY PLAN
927
+ --------------------------
928
+ Result
929
+ One-Time Filter: false
930
+ (2 rows)
931
+
897
932
SET pg_pathman.enable = f;
898
933
NOTICE: RuntimeAppend, RuntimeMergeAppend and PartitionFilter nodes and some other options have been disabled
899
934
SELECT count(*) FROM array_qual.test WHERE a > ALL (array[NULL, 700]);
@@ -1194,6 +1229,132 @@ EXPLAIN (COSTS OFF) EXECUTE q(1);
1194
1229
Filter: (a > ANY (ARRAY[100, 600, $1]))
1195
1230
(22 rows)
1196
1231
1232
+ DEALLOCATE q;
1233
+ PREPARE q(int4) AS SELECT * FROM array_qual.test WHERE a > ANY (array[NULL, $1]);
1234
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1235
+ QUERY PLAN
1236
+ -----------------------------------------------------
1237
+ Append
1238
+ -> Seq Scan on test_5
1239
+ Filter: (a > ANY ('{NULL,500}'::integer[]))
1240
+ -> Seq Scan on test_6
1241
+ -> Seq Scan on test_7
1242
+ -> Seq Scan on test_8
1243
+ -> Seq Scan on test_9
1244
+ -> Seq Scan on test_10
1245
+ (8 rows)
1246
+
1247
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1248
+ QUERY PLAN
1249
+ -----------------------------------------------------
1250
+ Append
1251
+ -> Seq Scan on test_5
1252
+ Filter: (a > ANY ('{NULL,500}'::integer[]))
1253
+ -> Seq Scan on test_6
1254
+ -> Seq Scan on test_7
1255
+ -> Seq Scan on test_8
1256
+ -> Seq Scan on test_9
1257
+ -> Seq Scan on test_10
1258
+ (8 rows)
1259
+
1260
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1261
+ QUERY PLAN
1262
+ -----------------------------------------------------
1263
+ Append
1264
+ -> Seq Scan on test_5
1265
+ Filter: (a > ANY ('{NULL,500}'::integer[]))
1266
+ -> Seq Scan on test_6
1267
+ -> Seq Scan on test_7
1268
+ -> Seq Scan on test_8
1269
+ -> Seq Scan on test_9
1270
+ -> Seq Scan on test_10
1271
+ (8 rows)
1272
+
1273
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1274
+ QUERY PLAN
1275
+ -----------------------------------------------------
1276
+ Append
1277
+ -> Seq Scan on test_5
1278
+ Filter: (a > ANY ('{NULL,500}'::integer[]))
1279
+ -> Seq Scan on test_6
1280
+ -> Seq Scan on test_7
1281
+ -> Seq Scan on test_8
1282
+ -> Seq Scan on test_9
1283
+ -> Seq Scan on test_10
1284
+ (8 rows)
1285
+
1286
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1287
+ QUERY PLAN
1288
+ -----------------------------------------------------
1289
+ Append
1290
+ -> Seq Scan on test_5
1291
+ Filter: (a > ANY ('{NULL,500}'::integer[]))
1292
+ -> Seq Scan on test_6
1293
+ -> Seq Scan on test_7
1294
+ -> Seq Scan on test_8
1295
+ -> Seq Scan on test_9
1296
+ -> Seq Scan on test_10
1297
+ (8 rows)
1298
+
1299
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1300
+ QUERY PLAN
1301
+ -------------------------------------------------------
1302
+ Custom Scan (RuntimeAppend)
1303
+ Prune by: (test.a > ANY (ARRAY[NULL::integer, $1]))
1304
+ -> Seq Scan on test_1 test
1305
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1306
+ -> Seq Scan on test_2 test
1307
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1308
+ -> Seq Scan on test_3 test
1309
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1310
+ -> Seq Scan on test_4 test
1311
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1312
+ -> Seq Scan on test_5 test
1313
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1314
+ -> Seq Scan on test_6 test
1315
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1316
+ -> Seq Scan on test_7 test
1317
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1318
+ -> Seq Scan on test_8 test
1319
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1320
+ -> Seq Scan on test_9 test
1321
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1322
+ -> Seq Scan on test_10 test
1323
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1324
+ (22 rows)
1325
+
1326
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1327
+ QUERY PLAN
1328
+ -------------------------------------------------------
1329
+ Custom Scan (RuntimeAppend)
1330
+ Prune by: (test.a > ANY (ARRAY[NULL::integer, $1]))
1331
+ -> Seq Scan on test_1 test
1332
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1333
+ -> Seq Scan on test_2 test
1334
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1335
+ -> Seq Scan on test_3 test
1336
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1337
+ -> Seq Scan on test_4 test
1338
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1339
+ -> Seq Scan on test_5 test
1340
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1341
+ -> Seq Scan on test_6 test
1342
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1343
+ -> Seq Scan on test_7 test
1344
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1345
+ -> Seq Scan on test_8 test
1346
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1347
+ -> Seq Scan on test_9 test
1348
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1349
+ -> Seq Scan on test_10 test
1350
+ Filter: (a > ANY (ARRAY[NULL::integer, $1]))
1351
+ (22 rows)
1352
+
1353
+ EXECUTE q(NULL);
1354
+ a | b
1355
+ ---+---
1356
+ (0 rows)
1357
+
1197
1358
DEALLOCATE q;
1198
1359
/*
1199
1360
* Test expr > ALL (... $1 ...)
@@ -1299,6 +1460,62 @@ EXPLAIN (COSTS OFF) EXECUTE q(1);
1299
1460
One-Time Filter: false
1300
1461
(2 rows)
1301
1462
1463
+ DEALLOCATE q;
1464
+ PREPARE q(int4) AS SELECT * FROM array_qual.test WHERE a > ALL (array[NULL, $1, NULL]);
1465
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1466
+ QUERY PLAN
1467
+ --------------------------
1468
+ Result
1469
+ One-Time Filter: false
1470
+ (2 rows)
1471
+
1472
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1473
+ QUERY PLAN
1474
+ --------------------------
1475
+ Result
1476
+ One-Time Filter: false
1477
+ (2 rows)
1478
+
1479
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1480
+ QUERY PLAN
1481
+ --------------------------
1482
+ Result
1483
+ One-Time Filter: false
1484
+ (2 rows)
1485
+
1486
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1487
+ QUERY PLAN
1488
+ --------------------------
1489
+ Result
1490
+ One-Time Filter: false
1491
+ (2 rows)
1492
+
1493
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1494
+ QUERY PLAN
1495
+ --------------------------
1496
+ Result
1497
+ One-Time Filter: false
1498
+ (2 rows)
1499
+
1500
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1501
+ QUERY PLAN
1502
+ --------------------------
1503
+ Result
1504
+ One-Time Filter: false
1505
+ (2 rows)
1506
+
1507
+ EXPLAIN (COSTS OFF) EXECUTE q(500);
1508
+ QUERY PLAN
1509
+ --------------------------
1510
+ Result
1511
+ One-Time Filter: false
1512
+ (2 rows)
1513
+
1514
+ EXECUTE q(NULL);
1515
+ a | b
1516
+ ---+---
1517
+ (0 rows)
1518
+
1302
1519
DEALLOCATE q;
1303
1520
PREPARE q(int4) AS SELECT * FROM array_qual.test WHERE a > ALL (array[$1, 100, 600]);
1304
1521
EXPLAIN (COSTS OFF) EXECUTE q(1);
0 commit comments