Repository navigation
Commit 3ca3cda
committed
perf(hash-join): skip dynamic filter for RightSemi when pushdown_filters=false
Right-Semi joins already implement the exact 'probe key ∈ build set'
check as their core operation via the downstream hash lookup. Applying
the bounds-based dynamic filter to those probe rows is semantically
redundant, and — without arrow-rs RowFilter's lazy-decode amortization
(i.e. pushdown_filters=false) — the per-batch PostScanFilter tax
exceeds the marginal hash-lookup savings on TPC-H-shaped workloads.
The #23701 hj benchmark surfaced this: density=1 RightSemi cases
(Q16 25×1.5M, Q17/Q18 100K×60M, Q22 fanout=100 100K×60M) showed
5–35% regression because the bounds filter prunes 0 rows while the
filter still evaluates on every probe row.
Skip the dynamic filter for RightSemi when pushdown_filters=false.
Keep it when pushdown_filters=true so RowFilter's two-phase decode
can still amortize the cost on selective Semi joins.
RightAnti is already excluded by the existing probe_preserved gate
(on_lr_is_preserved reports (true, false) for it), so this new gate
is redundant for that type — no separate check needed.
Tests:
- test_dynamic_filter_pushdown_rejects_right_semi_when_pushdown_off
- test_dynamic_filter_pushdown_keeps_right_semi_when_pushdown_on1 parent 6314f09 commit 3ca3cda
1 file changed
Lines changed: 115 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
892 | 892 | | |
893 | 893 | | |
894 | 894 | | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
| 915 | + | |
895 | 916 | | |
896 | 917 | | |
897 | 918 | | |
| |||
6837 | 6858 | | |
6838 | 6859 | | |
6839 | 6860 | | |
| 6861 | + | |
| 6862 | + | |
| 6863 | + | |
| 6864 | + | |
| 6865 | + | |
| 6866 | + | |
| 6867 | + | |
| 6868 | + | |
| 6869 | + | |
| 6870 | + | |
| 6871 | + | |
| 6872 | + | |
| 6873 | + | |
| 6874 | + | |
| 6875 | + | |
| 6876 | + | |
| 6877 | + | |
| 6878 | + | |
| 6879 | + | |
| 6880 | + | |
| 6881 | + | |
| 6882 | + | |
| 6883 | + | |
| 6884 | + | |
| 6885 | + | |
| 6886 | + | |
| 6887 | + | |
| 6888 | + | |
| 6889 | + | |
| 6890 | + | |
| 6891 | + | |
| 6892 | + | |
| 6893 | + | |
| 6894 | + | |
| 6895 | + | |
| 6896 | + | |
| 6897 | + | |
| 6898 | + | |
| 6899 | + | |
| 6900 | + | |
| 6901 | + | |
| 6902 | + | |
| 6903 | + | |
| 6904 | + | |
| 6905 | + | |
| 6906 | + | |
| 6907 | + | |
| 6908 | + | |
| 6909 | + | |
| 6910 | + | |
| 6911 | + | |
| 6912 | + | |
| 6913 | + | |
| 6914 | + | |
| 6915 | + | |
| 6916 | + | |
| 6917 | + | |
| 6918 | + | |
| 6919 | + | |
| 6920 | + | |
| 6921 | + | |
| 6922 | + | |
| 6923 | + | |
| 6924 | + | |
| 6925 | + | |
| 6926 | + | |
| 6927 | + | |
| 6928 | + | |
| 6929 | + | |
| 6930 | + | |
| 6931 | + | |
| 6932 | + | |
| 6933 | + | |
| 6934 | + | |
| 6935 | + | |
| 6936 | + | |
| 6937 | + | |
| 6938 | + | |
| 6939 | + | |
| 6940 | + | |
| 6941 | + | |
| 6942 | + | |
| 6943 | + | |
| 6944 | + | |
| 6945 | + | |
| 6946 | + | |
| 6947 | + | |
| 6948 | + | |
| 6949 | + | |
| 6950 | + | |
| 6951 | + | |
| 6952 | + | |
| 6953 | + | |
| 6954 | + | |
6840 | 6955 | | |
6841 | 6956 | | |
6842 | 6957 | | |
| |||
0 commit comments