Commits


Rossi Sun authored and GitHub committed 0ce72675f4d
GH-20339: [C++] Add residual filter support to swiss join (#39487) ### Rationale for this change Add residual filter support to swiss join. ### What changes are included in this PR? 1. Added class `JoinResidualFilter` as a centralized structure to evaluate residual filter in swiss join. It has various flavors of filtering for various join types. Zero-overhead is guaranteed for trivial filters (literal true and sometimes literal false/null). More detailed explanation in code comments. 2. Tuned the structure of swiss join main body (`JoinProbeProcessor::OnNextBatch`) to better cope with `JoinResidualFilter` calls. ### Are these changes tested? Legacy UTs (`HashJoin.Random`, `HashJoin.ResidualFilter` and `HashJoin.TrivialResidualFilter`) cover part of this change. New fine-grained residual filter cases added as well. ### Are there any user-facing changes? No. * Closes: #20339 Lead-authored-by: zanmato <zanmato1984@gmail.com> Co-authored-by: zanmato1984 <zanmato1984@gmail.com> Co-authored-by: Ruoxi Sun <zanmato1984@gmail.com> Co-authored-by: Rossi Sun <zanmato1984@gmail.com> Signed-off-by: Weston Pace <weston.pace@gmail.com>