-
Notifications
You must be signed in to change notification settings - Fork 3.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GH-20339: [C++] Add residual filter support to swiss join #39487
Conversation
|
@@ -1123,29 +1143,6 @@ uint32_t SwissTableForJoin::payload_id_to_key_id(uint32_t payload_id) const { | |||
return static_cast<uint32_t>(first_greater - entries) - 1; | |||
} | |||
|
|||
void SwissTableForJoin::payload_ids_to_key_ids(int num_rows, const uint32_t* payload_ids, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Deleted because used nowhere in existing code base.
@zanmato1984 would it be possible to add some test cases? |
Yes, I am working on that. |
@zanmato1984 I will completely review once the test cases are there. |
I tried to rebase and get things messy. Let me fix my branch first. Sorry for the trouble, guys :( |
118c93e
to
629cdd7
Compare
Hi @westonpace , I've addressed the comments you previously left except one thing I'm uncertain about in my last post. Would you please take a look again? Thanks! |
After merging your PR, Conbench analyzed the 7 benchmarking runs that have been run so far on merge-commit 0ce7267. There were no benchmark performance regressions. 🎉 The full Conbench report has more details. It also includes information about 11 possible false positives for unstable benchmarks that are known to sometimes produce them. |
Rationale for this change
Add residual filter support to swiss join.
What changes are included in this PR?
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.JoinProbeProcessor::OnNextBatch
) to better cope withJoinResidualFilter
calls.Are these changes tested?
Legacy UTs (
HashJoin.Random
,HashJoin.ResidualFilter
andHashJoin.TrivialResidualFilter
) cover part of this change. New fine-grained residual filter cases added as well.Are there any user-facing changes?
No.