IN LIST: isolate branchless filter implementation - #23907
Conversation
df02e32 to
4fef640
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #23907 +/- ##
==========================================
- Coverage 80.85% 80.85% -0.01%
==========================================
Files 1101 1102 +1
Lines 374933 374943 +10
Branches 374933 374943 +10
==========================================
- Hits 303166 303163 -3
- Misses 53671 53680 +9
- Partials 18096 18100 +4 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
run benchmark in_list_strategy |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing fix/in-list-branchless-followups (4fef640) to 88365dd (merge-base) diff using: in_list_strategy File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: CPU Details (lscpu)Details
Resource Usagein_list_strategy — base (merge-base)
in_list_strategy — branch
File an issue against this benchmark runner |
4fef640 to
a4348a6
Compare
Which issue does this PR close?
Rationale for this change
#23014 added
BranchlessFilterfor small primitiveINlists. Thatimplementation currently sits in
primitive_filter.rsalongside the bitmapand hash-based filters. This PR moves the branchless-specific types, functions,
and tests into
branchless_filter.rs.The module docs explain the direct-comparison path and its per-width limits.
They also cover why narrow types switch to bitmap filters and how nulls are
handled.
BranchlessFilter::try_newalso returns an execution error when the list isover its limit. Strategy selection rejects such lists before constructing the
filter, so hitting that guard means the caller violated an internal invariant.
This PR reports it as an internal error instead.
What changes are included in this PR?
BranchlessFilter, its type mappings, size limits, and tests intobranchless_filter.rs.narrow-type bitmap fallback, and null handling.
error.
unchanged.
Are these changes tested?
Yes. The existing branchless-filter tests were moved unchanged and continue to
pass.
cargo fmt --allcargo test -p datafusion-physical-expr expressions::in_list --libcargo clippy --all-targets --all-features -- -D warningsAre there any user-facing changes?
No. This only reorganizes internal code and corrects an internal error
classification.