This repository was archived by the owner on Apr 30, 2026. It is now read-only.
Commit d1bb26b
committed
fix: OP_IN null-aware row and set handling
Regression: exec_in treated typed nulls as ordinary data values.
On a column containing 0Nl (i64 null), the null-sentinel integer
read back from the column didn't match the filter set `[1]`, so
`not-in k [1]` happily returned the null rows as "true" — leaking
4 rows instead of the 2 that should pass.
Fix:
- Read the column's and set's HAS_NULLS flag + null bitmap.
- Before probing, drop any null elements from the set's probe
buffer — a non-null col value must never match a null set cell
via sentinel-collision.
- In the per-row loop, if the col row is null (atom or bitmap),
emit 0 unconditionally. Both `in` and `not-in` are defined
to be false for null inputs (SQL-style UNKNOWN → false in
boolean context).
- Also handle atom null via RAY_ATOM_IS_NULL for the degenerate
scalar-col case.
Regression test /eval/select_where_in_nulls asserts both `in` and
`not-in` correctly exclude null rows from a 5-row column with two
nulls.
621/621 tests pass in debug and release.1 parent 41fc3cc commit d1bb26b
2 files changed
Lines changed: 78 additions & 13 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
606 | 606 | | |
607 | 607 | | |
608 | 608 | | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
609 | 619 | | |
610 | 620 | | |
611 | 621 | | |
| |||
636 | 646 | | |
637 | 647 | | |
638 | 648 | | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
639 | 653 | | |
640 | 654 | | |
641 | 655 | | |
| |||
646 | 660 | | |
647 | 661 | | |
648 | 662 | | |
649 | | - | |
650 | | - | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
651 | 667 | | |
652 | | - | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
653 | 673 | | |
654 | 674 | | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
655 | 680 | | |
656 | | - | |
657 | | - | |
658 | | - | |
659 | | - | |
660 | | - | |
661 | | - | |
| 681 | + | |
| 682 | + | |
662 | 683 | | |
663 | | - | |
| 684 | + | |
664 | 685 | | |
665 | 686 | | |
666 | 687 | | |
| |||
676 | 697 | | |
677 | 698 | | |
678 | 699 | | |
679 | | - | |
680 | | - | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
681 | 709 | | |
682 | 710 | | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
683 | 715 | | |
684 | 716 | | |
685 | 717 | | |
686 | 718 | | |
687 | | - | |
| 719 | + | |
688 | 720 | | |
689 | 721 | | |
690 | 722 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1008 | 1008 | | |
1009 | 1009 | | |
1010 | 1010 | | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
1011 | 1043 | | |
1012 | 1044 | | |
1013 | 1045 | | |
| |||
2761 | 2793 | | |
2762 | 2794 | | |
2763 | 2795 | | |
| 2796 | + | |
2764 | 2797 | | |
2765 | 2798 | | |
2766 | 2799 | | |
| |||
0 commit comments