Uh oh!
There was an error while loading. Please reload this page.
Deduplicate InList primitive static filters - #21932
Conversation
134f354 to
9904dccCompare9904dcc to
6856e94Compare
alamb
left a comment
There was a problem hiding this comment.
Thank you @geoffreyclaude -- this looks great to me
| Ok(BooleanArray::new(contains_buffer, result_nulls)) | ||
| } | ||
| } | ||
| primitive_static_filter!($Name, $ArrowType, $OrderedType, <$OrderedType>::from); |
alamb
commented
Apr 29, 2026
run benchmarks in_list |
adriangbot
commented
Apr 29, 2026
🤖 Criterion benchmark running (GKE) | trigger CPU Details (lscpu)Comparing perf/in_list_primitive_result_dedup (6856e94) to 66980e2 (merge-base) diff File an issue against this benchmark runner |
adriangbot
commented
Apr 29, 2026
🤖 Criterion benchmark completed (GKE) | trigger Instance: CPU Details (lscpu)DetailsResource Usagebase (merge-base)
branch
File an issue against this benchmark runner |
alamb
commented
Apr 29, 2026
I think the results look good -- the few slowdowns I think are outliers. Since this is just a refactoring I just clicked the merge button. Thanks again @geoffreyclaude |
Uh oh!
There was an error while loading. Please reload this page.
Which issue does this PR close?
Rationale for this change
The existing primitive
IN LISTstatic filters have separate integer and float macros. The float version exists only to wrap values inOrderedFloat*for hash/equality semantics, but the rest of the implementation is copied from the integer path, including the SQL three-valued-logic result construction.This PR removes that duplication independently from the larger and more controversial direct-probe optimization in #19390.
What changes are included in this PR?
primitive_static_filter!macro so it can optionally use a different storedHashSetvalue type and conversion function.primitive_static_filter!(..., ...)form for integer filters.float_static_filter!(..., ..., OrderedFloat*)call sites, but makesfloat_static_filter!delegate toprimitive_static_filter!instead of duplicating the full implementation.HashSetlookup strategy andOrderedFloat*bit-pattern handling forFloat32/Float64.Are these changes tested?
Yes.
Are there any user-facing changes?
No. This is an internal refactor only.