Repository navigation
Commit 5148cd3
refactor: use the null-aware anti join for every
#25339 made the null-aware
`LeftAnti` hash join take more than one key and a residual filter. The two
workarounds for the old executor limits are no longer necessary:
* More than one key: the rule built a null-aware `LeftMark` join and a
filter on the mark. It now builds the null-aware `LeftAnti` join.
* A residual filter: the rule gave up, and the caller materialized the
UNKNOWN rows with three mark joins, two of them nested loop joins. It now
builds the null-aware `LeftAnti` join, which applies the residual filter
when it looks for UNKNOWN rows. The plan in `joins.slt` is the same as on
`main` again, and the single anti join that `null_aware_anti_join.slt`
pins for a residual filter stays.
The executor reads the first key as the `NOT IN` value. If the `IN`
equality does not become that key, the rule still gives up and the caller
materializes the result.
A constant `NOT IN` value is projected as a column for a correlated
subquery too, so the value is the first key and the correlation the second.
This corrects two `null_aware_anti_join.slt` results that were pinned to
wrong answers, and three constant `NOT IN` queries that failed to plan now
run. All the new results agree with DuckDB 1.5.2.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>NOT IN key shape1 parent 10ccc3e commit 5148cd3
4 files changed
Lines changed: 89 additions & 141 deletions
File tree
- datafusion
- optimizer/src
- sqllogictest/test_files
Lines changed: 32 additions & 59 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
488 | 488 | | |
489 | 489 | | |
490 | 490 | | |
491 | | - | |
492 | | - | |
493 | | - | |
494 | | - | |
495 | 491 | | |
496 | 492 | | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
497 | 497 | | |
498 | 498 | | |
499 | 499 | | |
| |||
519 | 519 | | |
520 | 520 | | |
521 | 521 | | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
522 | 525 | | |
523 | | - | |
524 | 526 | | |
| 527 | + | |
525 | 528 | | |
526 | 529 | | |
527 | 530 | | |
| |||
764 | 767 | | |
765 | 768 | | |
766 | 769 | | |
767 | | - | |
768 | | - | |
769 | 770 | | |
770 | 771 | | |
771 | 772 | | |
| |||
799 | 800 | | |
800 | 801 | | |
801 | 802 | | |
802 | | - | |
803 | | - | |
804 | | - | |
805 | | - | |
806 | | - | |
807 | | - | |
808 | | - | |
809 | | - | |
810 | | - | |
811 | | - | |
812 | | - | |
813 | | - | |
814 | | - | |
815 | | - | |
816 | | - | |
817 | | - | |
818 | | - | |
819 | | - | |
820 | | - | |
821 | | - | |
822 | | - | |
823 | | - | |
824 | | - | |
825 | | - | |
826 | | - | |
827 | | - | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
828 | 816 | | |
829 | 817 | | |
830 | 818 | | |
| |||
884 | 872 | | |
885 | 873 | | |
886 | 874 | | |
887 | | - | |
888 | | - | |
889 | | - | |
890 | | - | |
891 | | - | |
892 | | - | |
893 | | - | |
894 | | - | |
895 | | - | |
896 | | - | |
897 | | - | |
898 | | - | |
899 | 875 | | |
900 | 876 | | |
901 | 877 | | |
| |||
909 | 885 | | |
910 | 886 | | |
911 | 887 | | |
912 | | - | |
913 | | - | |
| 888 | + | |
914 | 889 | | |
915 | 890 | | |
916 | 891 | | |
| |||
1895 | 1870 | | |
1896 | 1871 | | |
1897 | 1872 | | |
1898 | | - | |
1899 | | - | |
1900 | | - | |
| 1873 | + | |
| 1874 | + | |
| 1875 | + | |
1901 | 1876 | | |
1902 | | - | |
| 1877 | + | |
1903 | 1878 | | |
1904 | 1879 | | |
1905 | 1880 | | |
| |||
1920 | 1895 | | |
1921 | 1896 | | |
1922 | 1897 | | |
1923 | | - | |
1924 | | - | |
1925 | | - | |
1926 | | - | |
1927 | | - | |
1928 | | - | |
1929 | | - | |
1930 | | - | |
| 1898 | + | |
| 1899 | + | |
| 1900 | + | |
| 1901 | + | |
| 1902 | + | |
| 1903 | + | |
1931 | 1904 | | |
1932 | 1905 | | |
1933 | 1906 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1988 | 1988 | | |
1989 | 1989 | | |
1990 | 1990 | | |
1991 | | - | |
1992 | | - | |
1993 | | - | |
1994 | | - | |
1995 | | - | |
1996 | | - | |
1997 | | - | |
1998 | | - | |
1999 | | - | |
2000 | | - | |
2001 | | - | |
2002 | | - | |
2003 | | - | |
2004 | | - | |
2005 | | - | |
2006 | | - | |
| 1991 | + | |
| 1992 | + | |
| 1993 | + | |
| 1994 | + | |
| 1995 | + | |
2007 | 1996 | | |
2008 | 1997 | | |
2009 | 1998 | | |
| |||
Lines changed: 23 additions & 16 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
655 | 655 | | |
656 | 656 | | |
657 | 657 | | |
658 | | - | |
| 658 | + | |
659 | 659 | | |
| 660 | + | |
| 661 | + | |
660 | 662 | | |
661 | | - | |
| 663 | + | |
662 | 664 | | |
| 665 | + | |
| 666 | + | |
663 | 667 | | |
664 | 668 | | |
665 | 669 | | |
| |||
683 | 687 | | |
684 | 688 | | |
685 | 689 | | |
686 | | - | |
| 690 | + | |
687 | 691 | | |
688 | | - | |
689 | | - | |
690 | 692 | | |
691 | 693 | | |
692 | 694 | | |
693 | | - | |
| 695 | + | |
694 | 696 | | |
695 | | - | |
| 697 | + | |
696 | 698 | | |
| 699 | + | |
| 700 | + | |
697 | 701 | | |
698 | 702 | | |
699 | 703 | | |
| |||
702 | 706 | | |
703 | 707 | | |
704 | 708 | | |
705 | | - | |
706 | | - | |
707 | | - | |
708 | | - | |
709 | | - | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
710 | 716 | | |
711 | | - | |
712 | | - | |
713 | | - | |
714 | | - | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
715 | 722 | | |
716 | 723 | | |
717 | 724 | | |
| |||
Lines changed: 29 additions & 50 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
369 | 369 | | |
370 | 370 | | |
371 | 371 | | |
372 | | - | |
373 | | - | |
374 | | - | |
| 372 | + | |
| 373 | + | |
375 | 374 | | |
376 | 375 | | |
377 | 376 | | |
| |||
385 | 384 | | |
386 | 385 | | |
387 | 386 | | |
388 | | - | |
389 | | - | |
390 | | - | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
391 | 390 | | |
392 | 391 | | |
393 | 392 | | |
| |||
398 | 397 | | |
399 | 398 | | |
400 | 399 | | |
401 | | - | |
402 | | - | |
403 | | - | |
404 | | - | |
405 | | - | |
406 | | - | |
407 | | - | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
408 | 405 | | |
409 | | - | |
410 | | - | |
411 | | - | |
412 | | - | |
413 | | - | |
414 | | - | |
415 | | - | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
416 | 411 | | |
417 | 412 | | |
418 | 413 | | |
419 | 414 | | |
420 | 415 | | |
421 | 416 | | |
422 | 417 | | |
423 | | - | |
424 | | - | |
425 | | - | |
426 | | - | |
427 | | - | |
428 | | - | |
429 | | - | |
430 | | - | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
431 | 423 | | |
432 | 424 | | |
433 | 425 | | |
| |||
453 | 445 | | |
454 | 446 | | |
455 | 447 | | |
456 | | - | |
457 | | - | |
458 | | - | |
459 | | - | |
460 | | - | |
461 | | - | |
462 | | - | |
463 | | - | |
464 | | - | |
465 | | - | |
466 | | - | |
467 | | - | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
468 | 453 | | |
469 | | - | |
470 | | - | |
| 454 | + | |
| 455 | + | |
471 | 456 | | |
472 | | - | |
473 | | - | |
474 | | - | |
475 | | - | |
476 | | - | |
477 | | - | |
478 | | - | |
479 | | - | |
| 457 | + | |
| 458 | + | |
480 | 459 | | |
481 | 460 | | |
482 | 461 | | |
| |||
0 commit comments