You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
### 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 <[email protected]>
Co-authored-by: zanmato1984 <[email protected]>
Co-authored-by: Ruoxi Sun <[email protected]>
Co-authored-by: Rossi Sun <[email protected]>
Signed-off-by: Weston Pace <[email protected]>
Only HashJoinBasicImpl supports residual predicates (non-equality joins). This functionality needs to be ported to SwissJoin as well.
Reporter: Michal Nowakiewicz / @michalursa
Related issues:
Note: This issue was originally created as ARROW-17202. Please see the migration documentation for further details.
The text was updated successfully, but these errors were encountered: