Commit 4bff17e
authored
[Minor]: unify ANY/ALL planning and align ANY NULL semantics with PG (#21743)
## Which issue does this PR close?
Related with #2547 and #2548 but does not close
## Rationale for this change
In #21416 I've aligned ALL operator NULL semantics to Postgres while
supporting additional operators. I've implemented ANY operator but
missed that part. Initially that PR included these changes but with the
suggestion from @Jefffrey I've separated those changes and opened this
PR.
## What changes are included in this PR?
- Refactor ANY operator to use same logic with ALL operator
- align null semantics with postgres
| Query | PostgreSQL | This PR | DuckDB |
|---|---|---|---|
| `5 = ANY(NULL::INT[])` | `NULL` | `NULL` | `false` |
| `5 <> ANY(NULL::INT[])` | `NULL` | `NULL` | `false` |
| `5 > ANY(NULL::INT[])` | `NULL` | `NULL` | `false` |
| `5 < ANY(NULL::INT[])` | `NULL` | `NULL` | `false` |
| `5 >= ANY(NULL::INT[])` | `NULL` | `NULL` | `false` |
| `5 <= ANY(NULL::INT[])` | `NULL` | `NULL` | `false` |
#### I'll explore a followup implementation on ANY and ALL as UDFs
instead of this case approach to see if it will perform faster. I've
wanted to open this PR to correct out the NULL behavior
## Are these changes tested?
Yes existing and additional slt tests.
## Are there any user-facing changes?
Yes users will be able to see null semantics are same as postgres1 parent ff844be commit 4bff17e
3 files changed
Lines changed: 104 additions & 90 deletions
File tree
- datafusion
- sqllogictest/test_files/array
- sql
- src/expr
- tests/cases
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
621 | 621 | | |
622 | 622 | | |
623 | 623 | | |
624 | | - | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
625 | 630 | | |
626 | 631 | | |
627 | 632 | | |
| |||
640 | 645 | | |
641 | 646 | | |
642 | 647 | | |
643 | | - | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
644 | 654 | | |
645 | 655 | | |
646 | 656 | | |
| |||
1249 | 1259 | | |
1250 | 1260 | | |
1251 | 1261 | | |
1252 | | - | |
1253 | | - | |
1254 | | - | |
1255 | | - | |
1256 | | - | |
1257 | | - | |
1258 | | - | |
1259 | | - | |
1260 | | - | |
1261 | | - | |
1262 | | - | |
1263 | | - | |
1264 | | - | |
1265 | | - | |
1266 | | - | |
1267 | | - | |
1268 | | - | |
1269 | | - | |
1270 | | - | |
1271 | | - | |
1272 | | - | |
1273 | | - | |
1274 | | - | |
1275 | | - | |
1276 | | - | |
1277 | | - | |
1278 | | - | |
1279 | | - | |
1280 | | - | |
1281 | | - | |
1282 | | - | |
1283 | | - | |
1284 | | - | |
1285 | | - | |
1286 | | - | |
1287 | | - | |
1288 | | - | |
1289 | | - | |
1290 | | - | |
1291 | | - | |
1292 | | - | |
1293 | | - | |
1294 | | - | |
1295 | | - | |
1296 | | - | |
1297 | | - | |
1298 | | - | |
1299 | | - | |
1300 | | - | |
1301 | | - | |
1302 | | - | |
1303 | | - | |
1304 | | - | |
1305 | | - | |
1306 | | - | |
| 1262 | + | |
1307 | 1263 | | |
1308 | 1264 | | |
1309 | 1265 | | |
1310 | | - | |
| 1266 | + | |
1311 | 1267 | | |
1312 | | - | |
| 1268 | + | |
1313 | 1269 | | |
1314 | | - | |
1315 | | - | |
| 1270 | + | |
| 1271 | + | |
1316 | 1272 | | |
1317 | 1273 | | |
1318 | 1274 | | |
| 1275 | + | |
1319 | 1276 | | |
1320 | 1277 | | |
1321 | 1278 | | |
| |||
1325 | 1282 | | |
1326 | 1283 | | |
1327 | 1284 | | |
1328 | | - | |
1329 | | - | |
1330 | | - | |
| 1285 | + | |
| 1286 | + | |
| 1287 | + | |
| 1288 | + | |
| 1289 | + | |
| 1290 | + | |
| 1291 | + | |
1331 | 1292 | | |
1332 | 1293 | | |
1333 | 1294 | | |
1334 | 1295 | | |
1335 | 1296 | | |
1336 | | - | |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
| 1300 | + | |
1337 | 1301 | | |
1338 | 1302 | | |
1339 | | - | |
| 1303 | + | |
| 1304 | + | |
| 1305 | + | |
| 1306 | + | |
1340 | 1307 | | |
1341 | 1308 | | |
1342 | | - | |
| 1309 | + | |
| 1310 | + | |
| 1311 | + | |
| 1312 | + | |
1343 | 1313 | | |
1344 | 1314 | | |
1345 | | - | |
| 1315 | + | |
| 1316 | + | |
| 1317 | + | |
| 1318 | + | |
1346 | 1319 | | |
1347 | 1320 | | |
1348 | 1321 | | |
1349 | 1322 | | |
1350 | | - | |
| 1323 | + | |
1351 | 1324 | | |
1352 | 1325 | | |
1353 | 1326 | | |
1354 | 1327 | | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
1355 | 1333 | | |
1356 | 1334 | | |
1357 | | - | |
| 1335 | + | |
1358 | 1336 | | |
1359 | | - | |
| 1337 | + | |
1360 | 1338 | | |
1361 | | - | |
| 1339 | + | |
1362 | 1340 | | |
1363 | 1341 | | |
1364 | 1342 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
368 | 368 | | |
369 | 369 | | |
370 | 370 | | |
371 | | - | |
| 371 | + | |
372 | 372 | | |
373 | 373 | | |
374 | 374 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
517 | 517 | | |
518 | 518 | | |
519 | 519 | | |
520 | | - | |
521 | | - | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
522 | 523 | | |
523 | 524 | | |
524 | 525 | | |
525 | 526 | | |
526 | 527 | | |
527 | | - | |
528 | | - | |
529 | | - | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
530 | 532 | | |
531 | 533 | | |
532 | 534 | | |
| |||
754 | 756 | | |
755 | 757 | | |
756 | 758 | | |
757 | | - | |
| 759 | + | |
758 | 760 | | |
759 | 761 | | |
760 | 762 | | |
761 | | - | |
| 763 | + | |
762 | 764 | | |
763 | 765 | | |
764 | 766 | | |
765 | 767 | | |
766 | | - | |
| 768 | + | |
767 | 769 | | |
768 | 770 | | |
769 | 771 | | |
770 | 772 | | |
771 | | - | |
| 773 | + | |
772 | 774 | | |
773 | 775 | | |
774 | 776 | | |
775 | 777 | | |
776 | | - | |
| 778 | + | |
777 | 779 | | |
778 | 780 | | |
779 | 781 | | |
| |||
804 | 806 | | |
805 | 807 | | |
806 | 808 | | |
807 | | - | |
| 809 | + | |
808 | 810 | | |
809 | | - | |
| 811 | + | |
810 | 812 | | |
811 | 813 | | |
812 | 814 | | |
813 | | - | |
| 815 | + | |
814 | 816 | | |
815 | 817 | | |
816 | 818 | | |
817 | 819 | | |
818 | | - | |
| 820 | + | |
819 | 821 | | |
820 | 822 | | |
821 | 823 | | |
822 | 824 | | |
823 | | - | |
| 825 | + | |
824 | 826 | | |
825 | 827 | | |
826 | 828 | | |
827 | 829 | | |
828 | | - | |
| 830 | + | |
829 | 831 | | |
830 | 832 | | |
831 | 833 | | |
832 | 834 | | |
833 | | - | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
834 | 841 | | |
835 | 842 | | |
836 | 843 | | |
| |||
890 | 897 | | |
891 | 898 | | |
892 | 899 | | |
| 900 | + | |
| 901 | + | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
893 | 929 | | |
894 | 930 | | |
895 | 931 | | |
| |||
0 commit comments