Skip to content

IN LIST: optimize Utf8View and BinaryView filters - #24088

Merged
alamb merged 4 commits into
apache:mainfrom
geoffreyclaude:codex/in-list-byte-view-hashset
Sep 13, 2026
Merged

alamb merged 4 commits into
apache:mainfrom
geoffreyclaude:codex/in-list-byte-view-hashset

Conversation

@geoffreyclaude

@geoffreyclaude geoffreyclaude commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Rationale for this change

Arrow represents every Utf8View and BinaryView value with a 16-byte view. When a value is at most 12 bytes long, the complete value is stored directly in that view:

32-bit length | up to 12 value bytes, zero-padded

Equal short values therefore have the same 128-bit view. DataFusion can look up that view directly, without reading another buffer or using Arrow's general value comparison.

This PR uses that faster path when every non-null value in the IN list is at most 12 bytes long. The byte-view adapter treats each inline view as a Decimal128 key and passes it to the shared primitive selector from #24283, the same selector used by #24102:

Decimal128 is only a 16-byte container here; no decimal operations are performed.

A longer input value cannot match a short list value because its encoded length is different, so it can be rejected without reading its backing bytes. If the list itself contains a value longer than 12 bytes, DataFusion keeps using the general filter.

Null list entries do not affect this choice, but are still recorded for SQL null behavior. After unwrapping any dictionary, the input and list must use the same view type: Utf8View is not mixed with BinaryView, and regular Utf8 and Binary keep their existing paths.

What changes are included in this PR?

  • Adds the short-value path for Utf8View and BinaryView.
  • Passes the 128-bit keys to the shared primitive selector instead of making a separate filter choice.
  • Keeps the general filter for longer list values or mismatched types.
  • Preserves slices, dictionaries, nulls, IN, and NOT IN.

Are these changes tested?

Tests cover both view types and both faster paths; the 4/5-value and 12/13-byte boundaries; long inputs and lists that require the general filter; exact-type routing; slices and dictionaries; input and list nulls; and IN and NOT IN.

Are there any user-facing changes?

No. SQL results and public APIs are unchanged.

Automated benchmark snapshot

Automated run on an aarch64 Neoverse V2 runner, comparing #24102 with this PR at exact commit 00dd083e. The benchmark evaluates 8,192-row batches after filter construction. Lower is better.

All 15 reported rows improved, with a 35.9% geometric-mean time reduction.

Benchmark Before After Change
utf8view/short_8b/list=4/match=0% 18.7 us 11.6 us -38.0% (1.61x faster)
utf8view/short_8b/list=4/match=50% 39.3 us 11.6 us -70.5% (3.39x faster)
utf8view/short_8b/list=16/match=0% 18.9 us 14.1 us -25.4% (1.34x faster)
utf8view/short_8b/list=16/match=50% 39.6 us 30.1 us -24.0% (1.32x faster)
utf8view/short_8b/list=64/match=0% 18.6 us 13.4 us -28.0% (1.39x faster)
utf8view/short_8b/list=64/match=50% 38.5 us 28.4 us -26.2% (1.36x faster)
utf8view/short_8b/list=256/match=0% 18.5 us 13.4 us -27.6% (1.38x faster)
utf8view/short_8b/list=256/match=50% 38.3 us 25.7 us -32.9% (1.49x faster)
utf8view/len_12b/list=16/match=0% 18.6 us 15.4 us -17.2% (1.21x faster)
utf8view/len_12b/list=16/match=50% 40.0 us 18.3 us -54.2% (2.19x faster)
utf8view/len_12b/list=64/match=0% 18.7 us 13.7 us -26.7% (1.36x faster)
utf8view/len_12b/list=64/match=50% 39.6 us 25.9 us -34.6% (1.53x faster)
nulls/utf8view/short_8b/list=16/match=50%/nulls=20% 38.7 us 25.8 us -33.3% (1.50x faster)
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%/NOT_IN 38.5 us 24.7 us -35.8% (1.56x faster)
nulls/utf8view/short_8b/list=16/match=50%/nulls=50% 29.2 us 17.8 us -39.0% (1.64x faster)

@github-actions github-actions Bot added the physical-expr Changes to the physical-expr crates label Aug 4, 2026
@codecov-commenter

codecov-commenter commented Aug 4, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 88.41463% with 19 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.90%. Comparing base (c5257f0) to head (113eeba).

Files with missing lines Patch % Lines
...l-expr/src/expressions/in_list/byte_view_filter.rs 88.28% 6 Missing and 9 partials ⚠️
...atafusion/physical-expr/src/expressions/in_list.rs 81.81% 1 Missing and 1 partial ⚠️
.../physical-expr/src/expressions/in_list/strategy.rs 92.00% 0 Missing and 2 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #24088      +/-   ##
==========================================
- Coverage   81.90%   81.90%   -0.01%     
==========================================
  Files        1133     1134       +1     
  Lines      424993   425156     +163     
  Branches   424993   425156     +163     
==========================================
+ Hits       348083   348216     +133     
- Misses      56278    56293      +15     
- Partials    20632    20647      +15     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

run benchmark in_list

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5191485522-1453-kq4t5 6.12.85+ #1 SMP Wed Jun 17 20:31:55 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing codex/in-list-byte-view-hashset (65b67ba) to db0c31b (merge-base) diff

Run configuration
run benchmark in_list

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing codex/in-list-byte-view-hashset (65b67ba) to db0c31b (merge-base) diff

Run configuration
run benchmark in_list
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

group                                                  HEAD                                   codex_in-list-byte-view-hashset
-----                                                  ----                                   -------------------------------
in_list/Float32/list=100/nulls=0%                      1.00     18.1±0.26µs        ? ?/sec    1.26     22.9±1.53µs        ? ?/sec
in_list/Float32/list=100/nulls=20%                     1.35     49.8±2.50µs        ? ?/sec    1.00     36.9±0.54µs        ? ?/sec
in_list/Float32/list=28/nulls=0%                       1.00     14.5±0.02µs        ? ?/sec    1.00     14.5±0.03µs        ? ?/sec
in_list/Float32/list=28/nulls=20%                      1.00     14.6±0.03µs        ? ?/sec    1.00     14.6±0.03µs        ? ?/sec
in_list/Float32/list=3/nulls=0%                        1.00      3.2±0.01µs        ? ?/sec    1.00      3.2±0.01µs        ? ?/sec
in_list/Float32/list=3/nulls=20%                       1.00      3.3±0.01µs        ? ?/sec    1.00      3.4±0.00µs        ? ?/sec
in_list/Float32/list=8/nulls=0%                        1.00      5.1±0.01µs        ? ?/sec    1.00      5.1±0.02µs        ? ?/sec
in_list/Float32/list=8/nulls=20%                       1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.02µs        ? ?/sec
in_list/Int16/list=100/nulls=0%                        1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.01µs        ? ?/sec
in_list/Int16/list=100/nulls=20%                       1.00      5.4±0.01µs        ? ?/sec    1.00      5.4±0.01µs        ? ?/sec
in_list/Int16/list=28/nulls=0%                         1.00      5.3±0.01µs        ? ?/sec    1.01      5.4±0.09µs        ? ?/sec
in_list/Int16/list=28/nulls=20%                        1.00      5.5±0.02µs        ? ?/sec    1.01      5.5±0.01µs        ? ?/sec
in_list/Int16/list=3/nulls=0%                          1.00      3.5±0.01µs        ? ?/sec    1.00      3.5±0.01µs        ? ?/sec
in_list/Int16/list=3/nulls=20%                         1.00      3.6±0.01µs        ? ?/sec    1.00      3.6±0.01µs        ? ?/sec
in_list/Int16/list=8/nulls=0%                          1.00      4.5±0.01µs        ? ?/sec    1.00      4.5±0.02µs        ? ?/sec
in_list/Int16/list=8/nulls=20%                         1.00      4.7±0.01µs        ? ?/sec    1.00      4.7±0.01µs        ? ?/sec
in_list/Int32/list=100/nulls=0%                        1.87     56.1±0.66µs        ? ?/sec    1.00     30.0±0.54µs        ? ?/sec
in_list/Int32/list=100/nulls=20%                       2.07     57.8±0.62µs        ? ?/sec    1.00     27.9±0.62µs        ? ?/sec
in_list/Int32/list=28/nulls=0%                         1.00     14.5±0.05µs        ? ?/sec    1.00     14.5±0.02µs        ? ?/sec
in_list/Int32/list=28/nulls=20%                        1.00     14.7±0.02µs        ? ?/sec    1.00     14.7±0.04µs        ? ?/sec
in_list/Int32/list=3/nulls=0%                          1.00      3.2±0.00µs        ? ?/sec    1.00      3.2±0.02µs        ? ?/sec
in_list/Int32/list=3/nulls=20%                         1.00      3.4±0.02µs        ? ?/sec    1.00      3.4±0.01µs        ? ?/sec
in_list/Int32/list=8/nulls=0%                          1.00      5.1±0.02µs        ? ?/sec    1.00      5.1±0.02µs        ? ?/sec
in_list/Int32/list=8/nulls=20%                         1.00      5.3±0.02µs        ? ?/sec    1.00      5.3±0.02µs        ? ?/sec
in_list/TimestampNs/list=100/nulls=0%                  1.00     54.8±0.80µs        ? ?/sec    1.08     59.3±1.59µs        ? ?/sec
in_list/TimestampNs/list=100/nulls=20%                 1.00     62.4±1.41µs        ? ?/sec    1.03     64.3±0.62µs        ? ?/sec
in_list/TimestampNs/list=28/nulls=0%                   1.00     31.5±0.63µs        ? ?/sec    1.05     33.0±0.81µs        ? ?/sec
in_list/TimestampNs/list=28/nulls=20%                  1.00     40.9±1.00µs        ? ?/sec    1.19     48.6±4.45µs        ? ?/sec
in_list/TimestampNs/list=3/nulls=0%                    1.00      3.8±0.01µs        ? ?/sec    1.00      3.8±0.02µs        ? ?/sec
in_list/TimestampNs/list=3/nulls=20%                   1.00      3.9±0.00µs        ? ?/sec    1.00      3.9±0.02µs        ? ?/sec
in_list/TimestampNs/list=8/nulls=0%                    1.00      7.3±0.01µs        ? ?/sec    1.00      7.3±0.04µs        ? ?/sec
in_list/TimestampNs/list=8/nulls=20%                   1.00      7.5±0.01µs        ? ?/sec    1.00      7.5±0.01µs        ? ?/sec
in_list/UInt8/list=100/nulls=0%                        1.00      5.3±0.01µs        ? ?/sec    1.00      5.2±0.01µs        ? ?/sec
in_list/UInt8/list=100/nulls=20%                       1.00      5.4±0.01µs        ? ?/sec    1.00      5.4±0.01µs        ? ?/sec
in_list/UInt8/list=28/nulls=0%                         1.00      5.3±0.02µs        ? ?/sec    1.00      5.2±0.01µs        ? ?/sec
in_list/UInt8/list=28/nulls=20%                        1.00      5.4±0.01µs        ? ?/sec    1.00      5.4±0.01µs        ? ?/sec
in_list/UInt8/list=3/nulls=0%                          1.00      3.3±0.01µs        ? ?/sec    1.00      3.3±0.01µs        ? ?/sec
in_list/UInt8/list=3/nulls=20%                         1.00      3.4±0.00µs        ? ?/sec    1.00      3.4±0.01µs        ? ?/sec
in_list/UInt8/list=8/nulls=0%                          1.00      3.8±0.01µs        ? ?/sec    1.00      3.8±0.01µs        ? ?/sec
in_list/UInt8/list=8/nulls=20%                         1.00      3.9±0.01µs        ? ?/sec    1.00      3.9±0.01µs        ? ?/sec
in_list/Utf8/list=100/nulls=0%/str=100                 1.02     82.1±2.17µs        ? ?/sec    1.00     80.5±1.82µs        ? ?/sec
in_list/Utf8/list=100/nulls=0%/str=12                  1.00     48.7±2.62µs        ? ?/sec    1.08     52.4±0.48µs        ? ?/sec
in_list/Utf8/list=100/nulls=0%/str=3                   1.00    100.2±3.17µs        ? ?/sec    1.00    100.2±0.61µs        ? ?/sec
in_list/Utf8/list=100/nulls=20%/str=100                1.00     76.8±0.61µs        ? ?/sec    1.03     79.2±0.60µs        ? ?/sec
in_list/Utf8/list=100/nulls=20%/str=12                 1.00     54.2±1.02µs        ? ?/sec    1.05     57.0±1.97µs        ? ?/sec
in_list/Utf8/list=100/nulls=20%/str=3                  1.02     51.0±1.85µs        ? ?/sec    1.00     49.9±0.57µs        ? ?/sec
in_list/Utf8/list=28/nulls=0%/str=100                  1.00    123.1±1.93µs        ? ?/sec    1.02    126.1±0.93µs        ? ?/sec
in_list/Utf8/list=28/nulls=0%/str=12                   1.00     57.5±0.67µs        ? ?/sec    1.05     60.2±0.41µs        ? ?/sec
in_list/Utf8/list=28/nulls=0%/str=3                    1.00     92.1±0.49µs        ? ?/sec    1.01     92.7±0.54µs        ? ?/sec
in_list/Utf8/list=28/nulls=20%/str=100                 1.00    121.0±0.73µs        ? ?/sec    1.02    123.3±0.86µs        ? ?/sec
in_list/Utf8/list=28/nulls=20%/str=12                  1.00     71.3±0.44µs        ? ?/sec    1.01     72.2±0.43µs        ? ?/sec
in_list/Utf8/list=28/nulls=20%/str=3                   1.00     79.2±0.54µs        ? ?/sec    1.02     80.8±3.07µs        ? ?/sec
in_list/Utf8/list=3/nulls=0%/str=100                   1.00     64.5±0.50µs        ? ?/sec    1.00     64.6±0.59µs        ? ?/sec
in_list/Utf8/list=3/nulls=0%/str=12                    1.00     26.6±0.11µs        ? ?/sec    1.00     26.6±0.10µs        ? ?/sec
in_list/Utf8/list=3/nulls=0%/str=3                     1.00     28.2±0.19µs        ? ?/sec    1.00     28.1±0.10µs        ? ?/sec
in_list/Utf8/list=3/nulls=20%/str=100                  1.00     68.2±0.28µs        ? ?/sec    1.00     68.0±0.24µs        ? ?/sec
in_list/Utf8/list=3/nulls=20%/str=12                   1.00     29.1±0.08µs        ? ?/sec    1.00     29.1±0.07µs        ? ?/sec
in_list/Utf8/list=3/nulls=20%/str=3                    1.00     31.6±0.04µs        ? ?/sec    1.00     31.4±0.05µs        ? ?/sec
in_list/Utf8/list=8/nulls=0%/str=100                   1.00     64.7±0.34µs        ? ?/sec    1.00     64.9±0.58µs        ? ?/sec
in_list/Utf8/list=8/nulls=0%/str=12                    1.01     26.9±0.08µs        ? ?/sec    1.00     26.8±0.06µs        ? ?/sec
in_list/Utf8/list=8/nulls=0%/str=3                     1.01     29.2±0.14µs        ? ?/sec    1.00     28.8±0.08µs        ? ?/sec
in_list/Utf8/list=8/nulls=20%/str=100                  1.00     69.2±0.47µs        ? ?/sec    1.00     69.1±0.42µs        ? ?/sec
in_list/Utf8/list=8/nulls=20%/str=12                   1.00     29.7±0.06µs        ? ?/sec    1.00     29.6±0.05µs        ? ?/sec
in_list/Utf8/list=8/nulls=20%/str=3                    1.06     34.0±1.47µs        ? ?/sec    1.00     32.0±0.05µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=0%/nulls=0%          1.00     59.2±0.84µs        ? ?/sec    1.01     59.8±0.75µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=0%/nulls=20%         1.10     54.6±2.38µs        ? ?/sec    1.00     49.7±3.32µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=25%/nulls=0%         1.01    116.4±0.98µs        ? ?/sec    1.00    115.0±1.58µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=25%/nulls=20%        1.00    126.0±2.18µs        ? ?/sec    1.02    128.9±2.18µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=75%/nulls=0%         1.00    150.4±1.49µs        ? ?/sec    1.02    153.6±2.76µs        ? ?/sec
in_list/Utf8/mixed/list=100/match=75%/nulls=20%        1.00    144.3±1.52µs        ? ?/sec    1.03    147.9±1.39µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=0%/nulls=0%           1.00    125.9±1.09µs        ? ?/sec    1.00    126.1±0.75µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=0%/nulls=20%          1.00     50.1±2.81µs        ? ?/sec    1.05     52.6±1.09µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=25%/nulls=0%          1.01    140.3±2.28µs        ? ?/sec    1.00    139.3±2.08µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=25%/nulls=20%         1.00     99.5±2.06µs        ? ?/sec    1.01    100.8±1.24µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=75%/nulls=0%          1.00    154.9±1.10µs        ? ?/sec    1.00    155.4±2.18µs        ? ?/sec
in_list/Utf8/mixed/list=28/match=75%/nulls=20%         1.00    150.1±1.84µs        ? ?/sec    1.02    153.6±1.73µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=0%/nulls=0%            1.00     39.0±0.30µs        ? ?/sec    1.00     38.9±0.60µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=0%/nulls=20%           1.05     63.9±1.08µs        ? ?/sec    1.00     60.9±1.38µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=25%/nulls=0%           1.00     62.1±1.14µs        ? ?/sec    1.00     62.2±1.30µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=25%/nulls=20%          1.00     64.2±0.58µs        ? ?/sec    1.01     64.8±0.86µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=75%/nulls=0%           1.01    101.3±0.47µs        ? ?/sec    1.00    100.2±1.02µs        ? ?/sec
in_list/Utf8/mixed/list=3/match=75%/nulls=20%          1.01    128.4±1.00µs        ? ?/sec    1.00    127.7±0.92µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=0%/nulls=0%            1.00     39.4±0.35µs        ? ?/sec    1.00     39.3±0.55µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=0%/nulls=20%           1.04     41.2±1.12µs        ? ?/sec    1.00     39.7±1.05µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=25%/nulls=0%           1.00     73.4±1.75µs        ? ?/sec    1.00     73.7±1.51µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=25%/nulls=20%          1.02     69.7±1.15µs        ? ?/sec    1.00     68.3±1.35µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=75%/nulls=0%           1.00    130.3±2.75µs        ? ?/sec    1.00    129.8±2.28µs        ? ?/sec
in_list/Utf8/mixed/list=8/match=75%/nulls=20%          1.00    114.8±1.08µs        ? ?/sec    1.01    116.4±0.95µs        ? ?/sec
in_list/Utf8View/list=100/nulls=0%/str=100             1.01    101.6±1.00µs        ? ?/sec    1.00    100.4±1.20µs        ? ?/sec
in_list/Utf8View/list=100/nulls=0%/str=12              1.00     30.8±0.89µs        ? ?/sec    1.78     54.7±1.18µs        ? ?/sec
in_list/Utf8View/list=100/nulls=0%/str=3               1.38     38.0±1.03µs        ? ?/sec    1.00     27.6±2.15µs        ? ?/sec
in_list/Utf8View/list=100/nulls=20%/str=100            1.00    104.7±1.10µs        ? ?/sec    1.02    107.2±1.49µs        ? ?/sec
in_list/Utf8View/list=100/nulls=20%/str=12             1.01     66.4±0.90µs        ? ?/sec    1.00     65.7±0.72µs        ? ?/sec
in_list/Utf8View/list=100/nulls=20%/str=3              1.00     27.6±0.60µs        ? ?/sec    2.20     60.9±2.50µs        ? ?/sec
in_list/Utf8View/list=28/nulls=0%/str=100              1.00    115.6±0.95µs        ? ?/sec    1.01    117.2±1.23µs        ? ?/sec
in_list/Utf8View/list=28/nulls=0%/str=12               1.00     62.3±0.77µs        ? ?/sec    1.13     70.3±0.66µs        ? ?/sec
in_list/Utf8View/list=28/nulls=0%/str=3                1.00     28.2±1.10µs        ? ?/sec    2.40     67.7±1.47µs        ? ?/sec
in_list/Utf8View/list=28/nulls=20%/str=100             1.00     85.4±1.32µs        ? ?/sec    1.03     88.0±1.75µs        ? ?/sec
in_list/Utf8View/list=28/nulls=20%/str=12              1.00     33.8±0.63µs        ? ?/sec    1.09     37.0±1.95µs        ? ?/sec
in_list/Utf8View/list=28/nulls=20%/str=3               1.00     33.5±0.98µs        ? ?/sec    1.92     64.4±4.63µs        ? ?/sec
in_list/Utf8View/list=3/nulls=0%/str=100               1.00     76.2±0.43µs        ? ?/sec    1.00     76.5±0.64µs        ? ?/sec
in_list/Utf8View/list=3/nulls=0%/str=12                1.87     18.0±0.07µs        ? ?/sec    1.00      9.6±0.01µs        ? ?/sec
in_list/Utf8View/list=3/nulls=0%/str=3                 1.89     18.2±0.04µs        ? ?/sec    1.00      9.6±0.03µs        ? ?/sec
in_list/Utf8View/list=3/nulls=20%/str=100              1.00     70.4±0.44µs        ? ?/sec    1.01     70.8±0.24µs        ? ?/sec
in_list/Utf8View/list=3/nulls=20%/str=12               2.28     22.2±0.08µs        ? ?/sec    1.00      9.7±0.01µs        ? ?/sec
in_list/Utf8View/list=3/nulls=20%/str=3                2.28     22.2±0.11µs        ? ?/sec    1.00      9.7±0.02µs        ? ?/sec
in_list/Utf8View/list=8/nulls=0%/str=100               1.01     77.0±0.27µs        ? ?/sec    1.00     76.3±0.28µs        ? ?/sec
in_list/Utf8View/list=8/nulls=0%/str=12                1.17     18.4±0.12µs        ? ?/sec    1.00     15.7±0.03µs        ? ?/sec
in_list/Utf8View/list=8/nulls=0%/str=3                 1.21     19.2±0.14µs        ? ?/sec    1.00     15.8±0.05µs        ? ?/sec
in_list/Utf8View/list=8/nulls=20%/str=100              1.00     70.6±0.29µs        ? ?/sec    1.01     71.4±0.47µs        ? ?/sec
in_list/Utf8View/list=8/nulls=20%/str=12               1.42     22.4±0.07µs        ? ?/sec    1.00     15.7±0.05µs        ? ?/sec
in_list/Utf8View/list=8/nulls=20%/str=3                1.43     22.3±0.06µs        ? ?/sec    1.00     15.6±0.14µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=0%/nulls=0%      1.00     80.7±0.94µs        ? ?/sec    1.07     86.1±1.20µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=0%/nulls=20%     1.00     62.3±2.40µs        ? ?/sec    1.00     62.1±1.13µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=25%/nulls=0%     1.00     87.0±2.35µs        ? ?/sec    1.03     89.3±2.49µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=25%/nulls=20%    1.05     89.5±4.46µs        ? ?/sec    1.00     85.3±2.73µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=75%/nulls=0%     1.00    111.0±1.70µs        ? ?/sec    1.03    113.9±1.77µs        ? ?/sec
in_list/Utf8View/mixed/list=100/match=75%/nulls=20%    1.04    122.5±4.31µs        ? ?/sec    1.00    118.1±3.64µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=0%/nulls=0%       1.00    106.3±1.23µs        ? ?/sec    1.05    111.9±0.94µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=0%/nulls=20%      1.00     76.0±2.06µs        ? ?/sec    1.04     78.8±1.80µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=25%/nulls=0%      1.00    121.4±1.05µs        ? ?/sec    1.01    123.1±2.13µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=25%/nulls=20%     1.05     73.4±2.33µs        ? ?/sec    1.00     69.9±1.92µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=75%/nulls=0%      1.00    118.4±1.10µs        ? ?/sec    1.02    121.2±1.20µs        ? ?/sec
in_list/Utf8View/mixed/list=28/match=75%/nulls=20%     1.04    117.4±1.68µs        ? ?/sec    1.00    112.7±2.91µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=0%/nulls=0%        1.00     35.4±0.46µs        ? ?/sec    1.04     36.9±0.38µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=0%/nulls=20%       1.02     31.9±0.17µs        ? ?/sec    1.00     31.4±0.27µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=25%/nulls=0%       1.02     61.2±1.26µs        ? ?/sec    1.00     60.2±0.74µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=25%/nulls=20%      1.10     65.0±1.04µs        ? ?/sec    1.00     58.9±1.26µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=75%/nulls=0%       1.00     76.9±1.38µs        ? ?/sec    1.00     76.7±1.31µs        ? ?/sec
in_list/Utf8View/mixed/list=3/match=75%/nulls=20%      1.09    109.0±1.90µs        ? ?/sec    1.00    100.0±1.86µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=0%/nulls=0%        1.00     35.1±0.44µs        ? ?/sec    1.05     36.8±0.36µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=0%/nulls=20%       1.02     32.4±0.33µs        ? ?/sec    1.00     31.7±0.35µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=25%/nulls=0%       1.00     55.2±1.64µs        ? ?/sec    1.02     56.3±1.65µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=25%/nulls=20%      1.13     58.9±0.95µs        ? ?/sec    1.00     52.0±0.64µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=75%/nulls=0%       1.00     68.9±1.18µs        ? ?/sec    1.01     69.9±2.62µs        ? ?/sec
in_list/Utf8View/mixed/list=8/match=75%/nulls=20%      1.13    105.8±1.70µs        ? ?/sec    1.00     93.5±2.79µs        ? ?/sec
in_list_cols/Int32/list=28/match=0%/nulls=0%           1.01     54.8±0.68µs        ? ?/sec    1.00     54.3±0.24µs        ? ?/sec
in_list_cols/Int32/list=28/match=0%/nulls=20%          1.00     72.3±0.48µs        ? ?/sec    1.01     73.2±0.50µs        ? ?/sec
in_list_cols/Int32/list=28/match=100%/nulls=0%         1.00   1887.6±7.97ns        ? ?/sec    1.00   1880.6±6.16ns        ? ?/sec
in_list_cols/Int32/list=28/match=100%/nulls=20%        1.00     72.2±0.51µs        ? ?/sec    1.01     72.7±0.44µs        ? ?/sec
in_list_cols/Int32/list=28/match=50%/nulls=0%          1.00     28.7±0.06µs        ? ?/sec    1.00     28.8±0.13µs        ? ?/sec
in_list_cols/Int32/list=28/match=50%/nulls=20%         1.00     71.5±0.27µs        ? ?/sec    1.01     72.4±0.24µs        ? ?/sec
in_list_cols/Int32/list=3/match=0%/nulls=0%            1.00      5.7±0.01µs        ? ?/sec    1.00      5.7±0.01µs        ? ?/sec
in_list_cols/Int32/list=3/match=0%/nulls=20%           1.00      7.1±0.01µs        ? ?/sec    1.03      7.3±0.04µs        ? ?/sec
in_list_cols/Int32/list=3/match=100%/nulls=0%          1.01   1882.5±5.17ns        ? ?/sec    1.00   1871.0±5.27ns        ? ?/sec
in_list_cols/Int32/list=3/match=100%/nulls=20%         1.00      7.1±0.02µs        ? ?/sec    1.01      7.2±0.02µs        ? ?/sec
in_list_cols/Int32/list=3/match=50%/nulls=0%           1.00      5.7±0.05µs        ? ?/sec    1.00      5.7±0.01µs        ? ?/sec
in_list_cols/Int32/list=3/match=50%/nulls=20%          1.00      7.1±0.02µs        ? ?/sec    1.01      7.2±0.02µs        ? ?/sec
in_list_cols/Int32/list=8/match=0%/nulls=0%            1.00     15.2±0.03µs        ? ?/sec    1.00     15.2±0.02µs        ? ?/sec
in_list_cols/Int32/list=8/match=0%/nulls=20%           1.00     19.8±0.06µs        ? ?/sec    1.00     19.7±0.05µs        ? ?/sec
in_list_cols/Int32/list=8/match=100%/nulls=0%          1.01   1880.8±5.46ns        ? ?/sec    1.00  1867.4±11.36ns        ? ?/sec
in_list_cols/Int32/list=8/match=100%/nulls=20%         1.01     19.8±0.05µs        ? ?/sec    1.00     19.7±0.05µs        ? ?/sec
in_list_cols/Int32/list=8/match=50%/nulls=0%           1.00     15.3±0.04µs        ? ?/sec    1.00     15.2±0.05µs        ? ?/sec
in_list_cols/Int32/list=8/match=50%/nulls=20%          1.00     19.8±0.04µs        ? ?/sec    1.00     19.8±0.05µs        ? ?/sec
in_list_cols/Utf8/list=28/match=0%                     1.00    181.3±0.40µs        ? ?/sec    1.00    180.4±0.46µs        ? ?/sec
in_list_cols/Utf8/list=28/match=100%                   1.05    740.1±1.83µs        ? ?/sec    1.00    706.4±1.87µs        ? ?/sec
in_list_cols/Utf8/list=28/match=50%                    1.00   1148.5±2.04µs        ? ?/sec    1.00   1154.2±1.86µs        ? ?/sec
in_list_cols/Utf8/list=3/match=0%                      1.00     18.9±0.03µs        ? ?/sec    1.00     18.9±0.03µs        ? ?/sec
in_list_cols/Utf8/list=3/match=100%                    1.06     78.7±0.85µs        ? ?/sec    1.00     73.9±0.34µs        ? ?/sec
in_list_cols/Utf8/list=3/match=50%                     1.00    100.1±0.72µs        ? ?/sec    1.04    104.1±2.68µs        ? ?/sec
in_list_cols/Utf8/list=8/match=0%                      1.00     51.5±0.13µs        ? ?/sec    1.00     51.6±0.29µs        ? ?/sec
in_list_cols/Utf8/list=8/match=100%                    1.05    210.3±0.76µs        ? ?/sec    1.00    200.3±0.68µs        ? ?/sec
in_list_cols/Utf8/list=8/match=50%                     1.01    317.2±0.53µs        ? ?/sec    1.00    314.8±1.81µs        ? ?/sec

Resource Usage

in_list — base (merge-base)

Metric Value
Wall time 310.1s
Peak memory 44.8 MiB
Avg memory 19.7 MiB
CPU user 579.8s
CPU sys 1.6s
Peak spill 0 B

in_list — branch

Metric Value
Wall time 305.1s
Peak memory 42.3 MiB
Avg memory 18.7 MiB
CPU user 578.7s
CPU sys 1.7s
Peak spill 0 B

File an issue against this benchmark runner

@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

run benchmark in_list_strategy

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5191695185-1456-pstns 6.12.85+ #1 SMP Wed Jun 17 20:31:55 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing codex/in-list-byte-view-hashset (65b67ba) to db0c31b (merge-base) diff

Run configuration
run benchmark in_list_strategy

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing codex/in-list-byte-view-hashset (65b67ba) to db0c31b (merge-base) diff

Run configuration
run benchmark in_list_strategy
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

group                                                                HEAD                                   codex_in-list-byte-view-hashset
-----                                                                ----                                   -------------------------------
dictionary/i32/dict=10/list=16                                       1.00      7.9±0.01µs        ? ?/sec    1.00      7.9±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16                                      1.00      8.0±0.06µs        ? ?/sec    1.00      8.0±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16/NOT_IN                               1.00      8.1±0.01µs        ? ?/sec    1.00      8.1±0.00µs        ? ?/sec
dictionary/i32/dict=100/list=4                                       1.00      8.0±0.01µs        ? ?/sec    1.00      8.0±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=64                                      1.00      7.9±0.00µs        ? ?/sec    1.00      8.0±0.07µs        ? ?/sec
dictionary/i32/dict=1000/list=16                                     1.00      9.0±0.01µs        ? ?/sec    1.00      9.0±0.01µs        ? ?/sec
dictionary/utf8_long/dict=100/list=16                                1.00      8.5±0.01µs        ? ?/sec    1.00      8.5±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=32                                1.00      8.3±0.01µs        ? ?/sec    1.00      8.3±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=8                                 1.00      8.2±0.01µs        ? ?/sec    1.00      8.2±0.01µs        ? ?/sec
dictionary/utf8_short/dict=500/list=20                               1.00      9.9±0.02µs        ? ?/sec    1.00      9.8±0.01µs        ? ?/sec
f32/large_list/list=64/match=0%                                      1.04     16.3±0.02µs        ? ?/sec    1.00     15.7±0.01µs        ? ?/sec
f32/large_list/list=64/match=50%                                     1.14     24.5±1.83µs        ? ?/sec    1.00     21.5±0.25µs        ? ?/sec
f32/small_list/list=32/match=0%                                      1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.01µs        ? ?/sec
f32/small_list/list=32/match=50%                                     1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.01µs        ? ?/sec
f32/small_list/list=4/match=0%                                       1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
f32/small_list/list=4/match=50%                                      1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=0%                          1.08     28.0±0.13µs        ? ?/sec    1.00     25.9±0.07µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=50%                         1.00     55.5±0.32µs        ? ?/sec    1.06     58.7±0.46µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=0%                            1.03     25.4±0.05µs        ? ?/sec    1.00     24.8±0.27µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=50%                           1.00     50.5±0.39µs        ? ?/sec    1.03     52.1±0.59µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=0%                              1.02     24.0±0.02µs        ? ?/sec    1.00     23.5±0.02µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=50%                             1.00     54.4±0.38µs        ? ?/sec    1.02     55.4±0.61µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%                             1.02     24.1±0.06µs        ? ?/sec    1.00     23.6±0.02µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%                            1.00     54.4±0.59µs        ? ?/sec    1.01     54.9±0.63µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=0%                   1.00     12.2±0.01µs        ? ?/sec    1.21     14.7±0.01µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=50%                  1.00     19.2±0.10µs        ? ?/sec    1.08     20.8±0.06µs        ? ?/sec
narrow_integer/f16/list=256/match=0%                                 1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/f16/list=256/match=50%                                1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/f16/list=4/match=0%                                   1.00      3.7±0.00µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/f16/list=4/match=50%                                  1.00      3.7±0.01µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/f16/list=64/match=0%                                  1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/f16/list=64/match=50%                                 1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=256/match=0%                                 1.01      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=256/match=50%                                1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=4/match=0%                                   1.00      3.7±0.00µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/i16/list=4/match=50%                                  1.00      3.7±0.00µs        ? ?/sec    1.00      3.7±0.00µs        ? ?/sec
narrow_integer/i16/list=64/match=0%                                  1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=64/match=50%                                 1.00      5.3±0.00µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
narrow_integer/u8/list=16/match=0%                                   1.00      4.7±0.00µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
narrow_integer/u8/list=16/match=50%                                  1.00      4.7±0.01µs        ? ?/sec    1.00      4.7±0.01µs        ? ?/sec
narrow_integer/u8/list=4/match=0%                                    1.00      3.4±0.02µs        ? ?/sec    1.00      3.4±0.01µs        ? ?/sec
narrow_integer/u8/list=4/match=50%                                   1.00      3.4±0.01µs        ? ?/sec    1.00      3.4±0.01µs        ? ?/sec
nulls/narrow_integer/u8/list=16/match=50%/nulls=20%                  1.00      4.8±0.00µs        ? ?/sec    1.00      4.8±0.00µs        ? ?/sec
nulls/primitive/i32/large_list/list=64/match=50%/nulls=20%           1.28     22.1±0.15µs        ? ?/sec    1.00     17.3±0.13µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%           1.00      9.2±0.02µs        ? ?/sec    1.00      9.2±0.02µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%/NOT_IN    1.00      9.3±0.02µs        ? ?/sec    1.00      9.4±0.02µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=50%           1.00      9.2±0.02µs        ? ?/sec    1.00      9.2±0.02µs        ? ?/sec
nulls/utf8/long_24b/list=16/match=50%/nulls=20%                      1.00     71.1±0.28µs        ? ?/sec    1.01     72.1±0.34µs        ? ?/sec
nulls/utf8/short_8b/list=16/match=50%/nulls=20%                      1.01     62.2±0.42µs        ? ?/sec    1.00     61.7±0.46µs        ? ?/sec
nulls/utf8view/long_24b/list=16/match=50%/nulls=20%                  1.00     86.4±0.18µs        ? ?/sec    1.01     87.2±0.22µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%                  1.52     38.5±0.14µs        ? ?/sec    1.00     25.3±0.37µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%/NOT_IN           1.65     38.7±0.17µs        ? ?/sec    1.00     23.5±0.33µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=50%                  1.81     28.9±0.11µs        ? ?/sec    1.00     15.9±0.12µs        ? ?/sec
primitive/i32/large_list/list=256/match=0%                           1.18     16.0±0.09µs        ? ?/sec    1.00     13.6±0.04µs        ? ?/sec
primitive/i32/large_list/list=256/match=50%                          1.03     24.3±0.44µs        ? ?/sec    1.00     23.7±0.36µs        ? ?/sec
primitive/i32/large_list/list=64/match=0%                            1.16     16.1±0.06µs        ? ?/sec    1.00     14.0±0.30µs        ? ?/sec
primitive/i32/large_list/list=64/match=50%                           1.14     25.1±0.19µs        ? ?/sec    1.00     21.9±0.81µs        ? ?/sec
primitive/i32/small_list/list=16/match=50%/NOT_IN                    1.00      9.2±0.02µs        ? ?/sec    1.00      9.2±0.02µs        ? ?/sec
primitive/i32/small_list/list=32/match=0%                            1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.02µs        ? ?/sec
primitive/i32/small_list/list=32/match=50%                           1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.05µs        ? ?/sec
primitive/i32/small_list/list=4/match=0%                             1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
primitive/i32/small_list/list=4/match=50%                            1.00      3.5±0.00µs        ? ?/sec    1.00      3.5±0.00µs        ? ?/sec
primitive/i64/large_list/list=128/match=0%                           1.00     12.4±0.02µs        ? ?/sec    1.03     12.8±0.04µs        ? ?/sec
primitive/i64/large_list/list=128/match=50%                          1.35     22.5±3.07µs        ? ?/sec    1.00     16.6±0.09µs        ? ?/sec
primitive/i64/large_list/list=32/match=0%                            1.00     12.6±0.10µs        ? ?/sec    1.00     12.6±0.02µs        ? ?/sec
primitive/i64/large_list/list=32/match=50%                           1.53     25.4±0.21µs        ? ?/sec    1.00     16.6±0.10µs        ? ?/sec
primitive/i64/small_list/list=16/match=0%                            1.00     16.7±0.02µs        ? ?/sec    1.00     16.7±0.01µs        ? ?/sec
primitive/i64/small_list/list=16/match=50%                           1.00     16.7±0.02µs        ? ?/sec    1.00     16.7±0.01µs        ? ?/sec
primitive/i64/small_list/list=4/match=0%                             1.00      4.4±0.00µs        ? ?/sec    1.00      4.4±0.01µs        ? ?/sec
primitive/i64/small_list/list=4/match=50%                            1.00      4.4±0.00µs        ? ?/sec    1.00      4.4±0.00µs        ? ?/sec
timestamp_ns/large_list/list=32/match=0%                             1.00     17.9±0.24µs        ? ?/sec    1.02     18.3±0.02µs        ? ?/sec
timestamp_ns/large_list/list=32/match=50%                            1.08     33.3±0.25µs        ? ?/sec    1.00     31.0±1.34µs        ? ?/sec
timestamp_ns/small_list/list=16/match=0%                             1.00     16.6±0.02µs        ? ?/sec    1.00     16.7±0.02µs        ? ?/sec
timestamp_ns/small_list/list=16/match=50%                            1.00     16.7±0.01µs        ? ?/sec    1.00     16.7±0.02µs        ? ?/sec
timestamp_ns/small_list/list=4/match=0%                              1.00      4.4±0.00µs        ? ?/sec    1.00      4.4±0.00µs        ? ?/sec
timestamp_ns/small_list/list=4/match=50%                             1.00      4.4±0.00µs        ? ?/sec    1.00      4.4±0.00µs        ? ?/sec
utf8/long_24b/list=256/match=0%                                      1.01     35.1±0.03µs        ? ?/sec    1.00     34.6±0.04µs        ? ?/sec
utf8/long_24b/list=256/match=50%                                     1.00     69.7±0.35µs        ? ?/sec    1.03     72.1±0.31µs        ? ?/sec
utf8/long_24b/list=4/match=0%                                        1.00     34.4±0.03µs        ? ?/sec    1.00     34.5±0.02µs        ? ?/sec
utf8/long_24b/list=4/match=50%                                       1.00     71.4±0.42µs        ? ?/sec    1.03     73.4±0.26µs        ? ?/sec
utf8/long_24b/list=64/match=0%                                       1.01     34.8±0.03µs        ? ?/sec    1.00     34.3±0.07µs        ? ?/sec
utf8/long_24b/list=64/match=50%                                      1.00     68.6±0.26µs        ? ?/sec    1.06     72.5±0.33µs        ? ?/sec
utf8/mixed_len/list=16/match=0%                                      1.00     35.3±0.10µs        ? ?/sec    1.12     39.6±0.08µs        ? ?/sec
utf8/mixed_len/list=16/match=50%                                     1.00     95.8±1.05µs        ? ?/sec    1.09    104.5±0.88µs        ? ?/sec
utf8/mixed_len/list=64/match=0%                                      1.00     38.8±0.13µs        ? ?/sec    1.05     40.5±0.08µs        ? ?/sec
utf8/mixed_len/list=64/match=50%                                     1.00    103.2±0.90µs        ? ?/sec    1.12    115.7±0.65µs        ? ?/sec
utf8/shared_prefix/pfx=12/list=32/match=50%                          1.00     70.9±1.01µs        ? ?/sec    1.02     72.2±0.34µs        ? ?/sec
utf8/short_8b/list=16/match=50%/NOT_IN                               1.07     67.1±0.53µs        ? ?/sec    1.00     62.6±0.47µs        ? ?/sec
utf8/short_8b/list=256/match=0%                                      1.00     27.3±0.06µs        ? ?/sec    1.01     27.7±0.10µs        ? ?/sec
utf8/short_8b/list=256/match=50%                                     1.01     65.0±0.45µs        ? ?/sec    1.00     64.2±0.44µs        ? ?/sec
utf8/short_8b/list=4/match=0%                                        1.00     27.3±0.03µs        ? ?/sec    1.03     28.1±0.03µs        ? ?/sec
utf8/short_8b/list=4/match=50%                                       1.04     67.0±0.40µs        ? ?/sec    1.00     64.2±0.36µs        ? ?/sec
utf8/short_8b/list=64/match=0%                                       1.02     27.7±0.01µs        ? ?/sec    1.00     27.1±0.11µs        ? ?/sec
utf8/short_8b/list=64/match=50%                                      1.06     66.3±0.27µs        ? ?/sec    1.00     62.7±0.40µs        ? ?/sec
utf8view/len_12b/list=16/match=0%                                    1.32     18.9±0.03µs        ? ?/sec    1.00     14.3±0.01µs        ? ?/sec
utf8view/len_12b/list=16/match=50%                                   2.09     40.0±0.25µs        ? ?/sec    1.00     19.2±0.30µs        ? ?/sec
utf8view/len_12b/list=64/match=0%                                    1.34     19.0±0.02µs        ? ?/sec    1.00     14.2±0.02µs        ? ?/sec
utf8view/len_12b/list=64/match=50%                                   1.73     39.7±0.19µs        ? ?/sec    1.00     22.9±3.32µs        ? ?/sec
utf8view/long_24b/list=16/match=0%                                   1.00     40.9±0.03µs        ? ?/sec    1.02     41.6±0.07µs        ? ?/sec
utf8view/long_24b/list=16/match=50%                                  1.00     85.1±0.29µs        ? ?/sec    1.02     86.5±0.51µs        ? ?/sec
utf8view/long_24b/list=256/match=0%                                  1.00     40.8±0.03µs        ? ?/sec    1.00     40.8±0.08µs        ? ?/sec
utf8view/long_24b/list=256/match=50%                                 1.00     84.9±0.37µs        ? ?/sec    1.01     85.9±0.38µs        ? ?/sec
utf8view/long_24b/list=4/match=0%                                    1.00     40.8±0.05µs        ? ?/sec    1.02     41.4±0.04µs        ? ?/sec
utf8view/long_24b/list=4/match=50%                                   1.00     84.1±0.16µs        ? ?/sec    1.02     85.7±0.33µs        ? ?/sec
utf8view/long_24b/list=64/match=0%                                   1.00     41.0±0.09µs        ? ?/sec    1.00     40.8±0.03µs        ? ?/sec
utf8view/long_24b/list=64/match=50%                                  1.00     84.1±0.40µs        ? ?/sec    1.01     84.9±0.34µs        ? ?/sec
utf8view/mixed_len/list=16/match=0%                                  1.00     29.9±0.05µs        ? ?/sec    1.06     31.7±0.12µs        ? ?/sec
utf8view/mixed_len/list=16/match=50%                                 1.04     69.4±0.49µs        ? ?/sec    1.00     66.9±0.27µs        ? ?/sec
utf8view/mixed_len/list=64/match=0%                                  1.00     34.3±0.12µs        ? ?/sec    1.03     35.3±0.16µs        ? ?/sec
utf8view/mixed_len/list=64/match=50%                                 1.03     83.6±0.53µs        ? ?/sec    1.00     80.8±0.60µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=0%                       1.00     42.8±0.05µs        ? ?/sec    1.00     42.8±0.12µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=50%                      1.00     84.5±0.28µs        ? ?/sec    1.05     89.1±0.98µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=0%                       1.03     42.0±0.09µs        ? ?/sec    1.00     40.8±0.13µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=50%                      1.00     84.2±0.39µs        ? ?/sec    1.01     85.3±0.20µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=0%                        1.02     30.7±0.08µs        ? ?/sec    1.00     30.2±0.05µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=50%                       1.00     72.5±0.36µs        ? ?/sec    1.01     73.2±0.12µs        ? ?/sec
utf8view/short_8b/list=16/match=0%                                   1.36     19.3±0.20µs        ? ?/sec    1.00     14.2±0.02µs        ? ?/sec
utf8view/short_8b/list=16/match=50%                                  1.57     39.3±0.15µs        ? ?/sec    1.00     25.0±1.68µs        ? ?/sec
utf8view/short_8b/list=256/match=0%                                  1.29     19.4±0.05µs        ? ?/sec    1.00     15.0±0.20µs        ? ?/sec
utf8view/short_8b/list=256/match=50%                                 1.43     38.3±0.14µs        ? ?/sec    1.00     26.8±1.40µs        ? ?/sec
utf8view/short_8b/list=4/match=0%                                    1.65     19.0±0.03µs        ? ?/sec    1.00     11.5±0.05µs        ? ?/sec
utf8view/short_8b/list=4/match=50%                                   3.46     39.7±0.21µs        ? ?/sec    1.00     11.5±0.01µs        ? ?/sec
utf8view/short_8b/list=64/match=0%                                   1.37     19.6±0.02µs        ? ?/sec    1.00     14.3±0.01µs        ? ?/sec
utf8view/short_8b/list=64/match=50%                                  1.48     38.8±0.19µs        ? ?/sec    1.00     26.3±0.31µs        ? ?/sec

Resource Usage

in_list_strategy — base (merge-base)

Metric Value
Wall time 1330.3s
Peak memory 40.8 MiB
Avg memory 31.3 MiB
CPU user 1537.5s
CPU sys 1.3s
Peak spill 0 B

in_list_strategy — branch

Metric Value
Wall time 1300.3s
Peak memory 43.7 MiB
Avg memory 34.3 MiB
CPU user 1511.6s
CPU sys 1.3s
Peak spill 0 B

File an issue against this benchmark runner

@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-byte-view-hashset branch from 65b67ba to a44ee0d Compare August 6, 2026 16:01
@geoffreyclaude geoffreyclaude changed the title IN LIST: optimize Utf8View and BinaryView filters with standard hash sets IN LIST: optimize Utf8View and BinaryView filters Aug 7, 2026
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-byte-view-hashset branch from a44ee0d to b0443b6 Compare August 9, 2026 06:21
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-byte-view-hashset branch 10 times, most recently from 61cc7a6 to 156d76b Compare August 11, 2026 16:29
@github-actions github-actions Bot added auto detected api change Auto detected API change and removed auto detected api change Auto detected API change labels Aug 11, 2026
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-byte-view-hashset branch 2 times, most recently from 6a5284e to f8ae3ad Compare August 12, 2026 10:18
@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

run benchmark in_list_strategy

@alamb alamb left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @geoffreyclaude -- this looks good to me

/// `u128` views.
struct ByteViewFilter<T: ByteViewType> {
inner: StaticFilterRef,
_marker: PhantomData<T>,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nothing in the filter's behavior actually depends on T — both StringViewArray and BinaryViewArray , we could potentially use a single structure here and dispatch at runtime rather than compile time and save compilation time.

@geoffreyclaude geoffreyclaude Sep 10, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could, but there are only two possible ByteViewTypes, so we won't win much here!

EDIT: Although on deeper look, it does propagate quite a bit, so I'll rework this part.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pushed to 28809d8


fn contains(&self, v: &dyn Array, negated: bool) -> Result<BooleanArray> {
let array = downcast_byte_view::<T>(v)?;
self.inner.contains(&as_decimal128(array), negated)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is correct because the haystack is guaranteed to be all inline views, right? And thus we are guaranteed that any larger view in v can not possible match

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes exactly, I can add a clarifying comment over this line

@alamb

alamb commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

I apologize for the delay in reviewing

@alamb

alamb commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

I wonder if merging this PR will also close this issue?

@alamb

alamb commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

CI failure I think is due to

geoffreyclaude and others added 2 commits September 11, 2026 08:53
Treat inline Utf8View and BinaryView values as 128-bit primitive keys and pass them to the shared primitive filter selector. This reuses direct comparisons for short lists and the primitive hash-set path for larger lists without reading backing buffers.

Lists containing a non-inline value continue to use the general filter. Exact view types, dictionaries, slices, nulls, IN, and NOT IN keep their existing behavior.
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-byte-view-hashset branch from e31670c to d75dad7 Compare September 11, 2026 06:53
@geoffreyclaude
geoffreyclaude force-pushed the codex/in-list-byte-view-hashset branch from d75dad7 to 28809d8 Compare September 11, 2026 07:32
@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

run benchmark in_list_strategy

@geoffreyclaude

geoffreyclaude commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

I wonder if merging this PR will also close this issue?

@alamb Probably... I think we still need to work on the OR-rewrite for lists of 4 items or less before the epic can be completely closed.

EDIT: I added a new sub-task for the OR-rewrite to the main issue (as well as a fix PR for floating point zeroes, which were not behaving consistently.)

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5631149186-2315-vg4vf 6.12.94+ #1 SMP Tue Aug 4 08:44:15 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing codex/in-list-byte-view-hashset (28809d8) to 7e5f40a (merge-base) diff

Run configuration
run benchmark in_list_strategy

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing codex/in-list-byte-view-hashset (28809d8) to 7e5f40a (merge-base) diff

Run configuration
run benchmark in_list_strategy
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

group                                                                HEAD                                   codex_in-list-byte-view-hashset
-----                                                                ----                                   -------------------------------
dictionary/i32/dict=10/list=16                                       1.00      7.6±0.00µs        ? ?/sec    1.00      7.6±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16                                      1.00      7.7±0.00µs        ? ?/sec    1.00      7.7±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=16/NOT_IN                               1.00      7.7±0.01µs        ? ?/sec    1.00      7.7±0.00µs        ? ?/sec
dictionary/i32/dict=100/list=4                                       1.00      7.6±0.01µs        ? ?/sec    1.00      7.6±0.01µs        ? ?/sec
dictionary/i32/dict=100/list=64                                      1.00      7.7±0.01µs        ? ?/sec    1.00      7.7±0.01µs        ? ?/sec
dictionary/i32/dict=1000/list=16                                     1.00      8.7±0.07µs        ? ?/sec    1.00      8.6±0.00µs        ? ?/sec
dictionary/utf8_long/dict=100/list=16                                1.00      8.3±0.01µs        ? ?/sec    1.00      8.3±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=32                                1.00      8.1±0.00µs        ? ?/sec    1.00      8.0±0.01µs        ? ?/sec
dictionary/utf8_short/dict=50/list=8                                 1.00      7.9±0.00µs        ? ?/sec    1.00      7.9±0.01µs        ? ?/sec
dictionary/utf8_short/dict=500/list=20                               1.00      9.6±0.01µs        ? ?/sec    1.01      9.7±0.07µs        ? ?/sec
dictionary_dispatch/i32/branchless/dictionary/list=4/batch=1         1.01    337.3±3.26ns        ? ?/sec    1.00    334.2±2.00ns        ? ?/sec
dictionary_dispatch/i32/branchless/dictionary/list=4/batch=64        1.01    392.0±3.98ns        ? ?/sec    1.00    389.5±2.56ns        ? ?/sec
dictionary_dispatch/i32/branchless/dictionary/list=4/batch=8         1.02    346.6±7.18ns        ? ?/sec    1.00    341.1±2.04ns        ? ?/sec
dictionary_dispatch/i32/branchless/dictionary/list=4/batch=8192      1.00      7.6±0.08µs        ? ?/sec    1.00      7.6±0.03µs        ? ?/sec
dictionary_dispatch/i32/branchless/plain/list=4/batch=1              1.00    154.9±0.68ns        ? ?/sec    1.07    165.0±7.32ns        ? ?/sec
dictionary_dispatch/i32/branchless/plain/list=4/batch=64             1.00    172.8±0.87ns        ? ?/sec    1.00    173.3±0.87ns        ? ?/sec
dictionary_dispatch/i32/branchless/plain/list=4/batch=8              1.00    159.6±0.87ns        ? ?/sec    1.05    167.5±6.92ns        ? ?/sec
dictionary_dispatch/i32/branchless/plain/list=4/batch=8192           1.00      3.4±0.00µs        ? ?/sec    1.00      3.4±0.00µs        ? ?/sec
dictionary_dispatch/i32/hash_set/dictionary/list=64/batch=1          1.00    281.0±2.92ns        ? ?/sec    1.07    300.6±3.46ns        ? ?/sec
dictionary_dispatch/i32/hash_set/dictionary/list=64/batch=64         1.03    344.3±2.15ns        ? ?/sec    1.00    335.7±2.59ns        ? ?/sec
dictionary_dispatch/i32/hash_set/dictionary/list=64/batch=8          1.02    290.8±2.34ns        ? ?/sec    1.00    285.6±3.07ns        ? ?/sec
dictionary_dispatch/i32/hash_set/dictionary/list=64/batch=8192       1.00      7.5±0.02µs        ? ?/sec    1.00      7.5±0.01µs        ? ?/sec
dictionary_dispatch/i32/hash_set/plain/list=64/batch=1               1.00    120.5±0.83ns        ? ?/sec    1.00    120.5±0.62ns        ? ?/sec
dictionary_dispatch/i32/hash_set/plain/list=64/batch=64              1.00    228.4±0.92ns        ? ?/sec    1.00    228.9±0.81ns        ? ?/sec
dictionary_dispatch/i32/hash_set/plain/list=64/batch=8               1.00    132.4±0.93ns        ? ?/sec    1.00    131.8±0.74ns        ? ?/sec
dictionary_dispatch/i32/hash_set/plain/list=64/batch=8192            1.00     14.5±0.01µs        ? ?/sec    1.00     14.5±0.01µs        ? ?/sec
f32/large_list/list=64/match=0%                                      1.00     15.5±0.01µs        ? ?/sec    1.01     15.7±0.04µs        ? ?/sec
f32/large_list/list=64/match=50%                                     1.45     27.2±0.38µs        ? ?/sec    1.00     18.7±0.05µs        ? ?/sec
f32/small_list/list=32/match=0%                                      1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.01µs        ? ?/sec
f32/small_list/list=32/match=50%                                     1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.01µs        ? ?/sec
f32/small_list/list=4/match=0%                                       1.00      3.4±0.00µs        ? ?/sec    1.00      3.4±0.00µs        ? ?/sec
f32/small_list/list=4/match=50%                                      1.00      3.4±0.00µs        ? ?/sec    1.00      3.4±0.00µs        ? ?/sec
fixed_size_binary/fsb1/list=16/match=0%                              1.00      4.7±0.00µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
fixed_size_binary/fsb1/list=16/match=50%                             1.00      4.7±0.01µs        ? ?/sec    1.00      4.7±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=0%                          1.00     14.4±0.03µs        ? ?/sec    1.02     14.7±0.04µs        ? ?/sec
fixed_size_binary/fsb16/list=10000/match=50%                         1.07     19.7±1.08µs        ? ?/sec    1.00     18.4±0.09µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=0%                            1.00     13.0±0.01µs        ? ?/sec    1.02     13.2±0.04µs        ? ?/sec
fixed_size_binary/fsb16/list=256/match=50%                           1.02     23.3±0.16µs        ? ?/sec    1.00     22.9±0.23µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=0%                              1.00     11.6±0.01µs        ? ?/sec    1.00     11.6±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=4/match=50%                             1.00     11.6±0.01µs        ? ?/sec    1.00     11.6±0.00µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%                             1.03     13.3±0.01µs        ? ?/sec    1.00     12.9±0.01µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=0%/input=unaligned             1.00     15.2±0.01µs        ? ?/sec    1.00     15.1±0.02µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%                            1.00     18.8±0.18µs        ? ?/sec    1.13     21.2±0.18µs        ? ?/sec
fixed_size_binary/fsb16/list=64/match=50%/input=unaligned            1.00     20.5±0.16µs        ? ?/sec    1.26     25.8±0.17µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=0%                              1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
fixed_size_binary/fsb2/list=64/match=50%                             1.00      5.3±0.01µs        ? ?/sec    1.00      5.3±0.00µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=0%                   1.00     14.5±0.02µs        ? ?/sec    1.00     14.5±0.01µs        ? ?/sec
interval_month_day_nano/small_list/list=4/match=50%                  1.00     16.8±0.05µs        ? ?/sec    1.25     21.0±0.17µs        ? ?/sec
narrow_integer/f16/list=256/match=0%                                 1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/f16/list=256/match=50%                                1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.01µs        ? ?/sec
narrow_integer/f16/list=4/match=0%                                   1.00      3.6±0.00µs        ? ?/sec    1.00      3.6±0.03µs        ? ?/sec
narrow_integer/f16/list=4/match=50%                                  1.00      3.6±0.00µs        ? ?/sec    1.00      3.6±0.00µs        ? ?/sec
narrow_integer/f16/list=64/match=0%                                  1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/f16/list=64/match=50%                                 1.05      5.5±0.02µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/i16/list=256/match=0%                                 1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/i16/list=256/match=50%                                1.00      5.2±0.00µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/i16/list=4/match=0%                                   1.00      3.6±0.01µs        ? ?/sec    1.00      3.6±0.00µs        ? ?/sec
narrow_integer/i16/list=4/match=50%                                  1.00      3.6±0.01µs        ? ?/sec    1.00      3.6±0.00µs        ? ?/sec
narrow_integer/i16/list=64/match=0%                                  1.00      5.2±0.00µs        ? ?/sec    1.01      5.3±0.00µs        ? ?/sec
narrow_integer/i16/list=64/match=50%                                 1.00      5.2±0.01µs        ? ?/sec    1.00      5.2±0.00µs        ? ?/sec
narrow_integer/u8/list=16/match=0%                                   1.00      4.5±0.00µs        ? ?/sec    1.00      4.6±0.00µs        ? ?/sec
narrow_integer/u8/list=16/match=50%                                  1.00      4.6±0.01µs        ? ?/sec    1.00      4.6±0.00µs        ? ?/sec
narrow_integer/u8/list=4/match=0%                                    1.00      3.2±0.01µs        ? ?/sec    1.00      3.2±0.00µs        ? ?/sec
narrow_integer/u8/list=4/match=50%                                   1.00      3.2±0.01µs        ? ?/sec    1.00      3.2±0.00µs        ? ?/sec
nulls/narrow_integer/u8/list=16/match=50%/nulls=20%                  1.00      4.6±0.00µs        ? ?/sec    1.00      4.6±0.01µs        ? ?/sec
nulls/primitive/i32/large_list/list=64/match=50%/nulls=20%           1.05     17.2±0.12µs        ? ?/sec    1.00     16.4±0.22µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%           1.00      9.0±0.01µs        ? ?/sec    1.00      9.0±0.01µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=20%/NOT_IN    1.00      9.1±0.01µs        ? ?/sec    1.00      9.1±0.00µs        ? ?/sec
nulls/primitive/i32/small_list/list=16/match=50%/nulls=50%           1.00      9.0±0.00µs        ? ?/sec    1.00      9.0±0.00µs        ? ?/sec
nulls/utf8/long_24b/list=16/match=50%/nulls=20%                      1.00     71.5±0.26µs        ? ?/sec    1.01     72.3±0.23µs        ? ?/sec
nulls/utf8/short_8b/list=16/match=50%/nulls=20%                      1.01     61.5±0.44µs        ? ?/sec    1.00     61.0±0.22µs        ? ?/sec
nulls/utf8view/long_24b/list=16/match=50%/nulls=20%                  1.00     77.1±0.50µs        ? ?/sec    1.03     79.5±0.26µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%                  1.78     45.4±0.28µs        ? ?/sec    1.00     25.5±0.11µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=20%/NOT_IN           1.74     45.4±0.28µs        ? ?/sec    1.00     26.1±0.14µs        ? ?/sec
nulls/utf8view/short_8b/list=16/match=50%/nulls=50%                  1.83     36.2±0.17µs        ? ?/sec    1.00     19.8±0.05µs        ? ?/sec
primitive/decimal128/large_list/list=5/match=0%                      1.00     13.0±0.05µs        ? ?/sec    1.02     13.3±0.08µs        ? ?/sec
primitive/decimal128/large_list/list=5/match=50%                     1.00     23.1±0.23µs        ? ?/sec    1.08     25.0±0.31µs        ? ?/sec
primitive/decimal128/large_list/list=64/match=0%                     1.09     14.0±0.03µs        ? ?/sec    1.00     12.8±0.01µs        ? ?/sec
primitive/decimal128/large_list/list=64/match=50%                    1.05     23.7±0.33µs        ? ?/sec    1.00     22.5±0.23µs        ? ?/sec
primitive/i32/large_list/list=256/match=0%                           1.01     11.9±0.02µs        ? ?/sec    1.00     11.8±0.01µs        ? ?/sec
primitive/i32/large_list/list=256/match=50%                          1.00     19.0±0.13µs        ? ?/sec    1.02     19.4±0.15µs        ? ?/sec
primitive/i32/large_list/list=64/match=0%                            1.03     12.3±0.01µs        ? ?/sec    1.00     12.0±0.02µs        ? ?/sec
primitive/i32/large_list/list=64/match=50%                           1.14     23.6±0.29µs        ? ?/sec    1.00     20.8±0.13µs        ? ?/sec
primitive/i32/small_list/list=16/match=50%/NOT_IN                    1.00      9.0±0.01µs        ? ?/sec    1.00      9.0±0.00µs        ? ?/sec
primitive/i32/small_list/list=32/match=0%                            1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.04µs        ? ?/sec
primitive/i32/small_list/list=32/match=50%                           1.00     16.4±0.01µs        ? ?/sec    1.00     16.4±0.01µs        ? ?/sec
primitive/i32/small_list/list=4/match=0%                             1.00      3.4±0.01µs        ? ?/sec    1.00      3.4±0.00µs        ? ?/sec
primitive/i32/small_list/list=4/match=50%                            1.00      3.4±0.00µs        ? ?/sec    1.00      3.4±0.01µs        ? ?/sec
primitive/i64/large_list/list=128/match=0%                           1.00     11.9±0.01µs        ? ?/sec    1.01     12.1±0.03µs        ? ?/sec
primitive/i64/large_list/list=128/match=50%                          1.00     20.1±0.18µs        ? ?/sec    1.00     20.1±1.32µs        ? ?/sec
primitive/i64/large_list/list=32/match=0%                            1.00     12.1±0.01µs        ? ?/sec    1.02     12.4±0.02µs        ? ?/sec
primitive/i64/large_list/list=32/match=50%                           1.02     22.8±0.24µs        ? ?/sec    1.00     22.2±0.41µs        ? ?/sec
primitive/i64/small_list/list=16/match=0%                            1.00     16.1±0.02µs        ? ?/sec    1.01     16.2±0.03µs        ? ?/sec
primitive/i64/small_list/list=16/match=50%                           1.00     16.1±0.02µs        ? ?/sec    1.01     16.2±0.02µs        ? ?/sec
primitive/i64/small_list/list=4/match=0%                             1.00      4.2±0.00µs        ? ?/sec    1.00      4.2±0.01µs        ? ?/sec
primitive/i64/small_list/list=4/match=50%                            1.00      4.3±0.01µs        ? ?/sec    1.00      4.3±0.01µs        ? ?/sec
timestamp_ns/large_list/list=32/match=0%                             1.00     17.5±0.08µs        ? ?/sec    1.16     20.3±0.02µs        ? ?/sec
timestamp_ns/large_list/list=32/match=50%                            1.00     29.5±0.23µs        ? ?/sec    1.22     36.0±0.45µs        ? ?/sec
timestamp_ns/small_list/list=16/match=0%                             1.00     16.2±0.02µs        ? ?/sec    1.00     16.2±0.02µs        ? ?/sec
timestamp_ns/small_list/list=16/match=50%                            1.00     16.1±0.03µs        ? ?/sec    1.01     16.2±0.02µs        ? ?/sec
timestamp_ns/small_list/list=4/match=0%                              1.00      4.2±0.00µs        ? ?/sec    1.00      4.2±0.00µs        ? ?/sec
timestamp_ns/small_list/list=4/match=50%                             1.00      4.2±0.01µs        ? ?/sec    1.00      4.3±0.00µs        ? ?/sec
utf8/long_24b/list=256/match=0%                                      1.00     34.4±0.04µs        ? ?/sec    1.07     36.8±0.02µs        ? ?/sec
utf8/long_24b/list=256/match=50%                                     1.02     72.2±0.24µs        ? ?/sec    1.00     70.7±0.33µs        ? ?/sec
utf8/long_24b/list=4/match=0%                                        1.00     34.6±0.10µs        ? ?/sec    1.07     36.8±0.03µs        ? ?/sec
utf8/long_24b/list=4/match=50%                                       1.00     72.4±0.26µs        ? ?/sec    1.00     72.5±0.17µs        ? ?/sec
utf8/long_24b/list=64/match=0%                                       1.00     34.3±0.03µs        ? ?/sec    1.07     36.7±0.03µs        ? ?/sec
utf8/long_24b/list=64/match=50%                                      1.02     71.2±0.25µs        ? ?/sec    1.00     69.9±0.21µs        ? ?/sec
utf8/mixed_len/list=16/match=0%                                      1.00     37.8±0.12µs        ? ?/sec    1.01     38.3±0.12µs        ? ?/sec
utf8/mixed_len/list=16/match=50%                                     1.06    104.3±0.56µs        ? ?/sec    1.00     98.3±0.89µs        ? ?/sec
utf8/mixed_len/list=64/match=0%                                      1.00     39.2±0.11µs        ? ?/sec    1.06     41.5±0.10µs        ? ?/sec
utf8/mixed_len/list=64/match=50%                                     1.13    117.1±0.83µs        ? ?/sec    1.00    103.8±0.90µs        ? ?/sec
utf8/shared_prefix/pfx=12/list=32/match=50%                          1.00     72.0±0.53µs        ? ?/sec    1.00     71.7±0.22µs        ? ?/sec
utf8/short_8b/list=16/match=50%/NOT_IN                               1.00     65.9±0.64µs        ? ?/sec    1.02     67.2±0.16µs        ? ?/sec
utf8/short_8b/list=256/match=0%                                      1.00     27.0±0.03µs        ? ?/sec    1.08     29.2±0.02µs        ? ?/sec
utf8/short_8b/list=256/match=50%                                     1.00     63.5±0.49µs        ? ?/sec    1.04     66.3±0.30µs        ? ?/sec
utf8/short_8b/list=4/match=0%                                        1.00     27.0±0.03µs        ? ?/sec    1.09     29.5±0.16µs        ? ?/sec
utf8/short_8b/list=4/match=50%                                       1.00     64.7±0.27µs        ? ?/sec    1.05     68.0±0.16µs        ? ?/sec
utf8/short_8b/list=64/match=0%                                       1.00     26.7±0.04µs        ? ?/sec    1.09     29.0±0.03µs        ? ?/sec
utf8/short_8b/list=64/match=50%                                      1.00     63.9±0.37µs        ? ?/sec    1.00     63.8±0.31µs        ? ?/sec
utf8view/len_12b/list=16/match=0%                                    1.45     19.1±0.26µs        ? ?/sec    1.00     13.2±0.01µs        ? ?/sec
utf8view/len_12b/list=16/match=50%                                   1.47     38.8±0.14µs        ? ?/sec    1.00     26.4±0.23µs        ? ?/sec
utf8view/len_12b/list=64/match=0%                                    1.41     18.6±0.03µs        ? ?/sec    1.00     13.2±0.01µs        ? ?/sec
utf8view/len_12b/list=64/match=50%                                   1.45     39.1±0.24µs        ? ?/sec    1.00     26.9±0.50µs        ? ?/sec
utf8view/long_24b/list=16/match=0%                                   1.00     41.0±0.04µs        ? ?/sec    1.08     44.4±0.06µs        ? ?/sec
utf8view/long_24b/list=16/match=50%                                  1.02     87.6±0.44µs        ? ?/sec    1.00     85.4±0.25µs        ? ?/sec
utf8view/long_24b/list=256/match=0%                                  1.00     40.5±0.03µs        ? ?/sec    1.07     43.5±0.03µs        ? ?/sec
utf8view/long_24b/list=256/match=50%                                 1.01     86.8±0.16µs        ? ?/sec    1.00     86.2±0.38µs        ? ?/sec
utf8view/long_24b/list=4/match=0%                                    1.00     40.9±0.05µs        ? ?/sec    1.07     43.9±0.04µs        ? ?/sec
utf8view/long_24b/list=4/match=50%                                   1.01     86.4±0.24µs        ? ?/sec    1.00     85.7±0.15µs        ? ?/sec
utf8view/long_24b/list=64/match=0%                                   1.00     40.4±0.04µs        ? ?/sec    1.08     43.6±0.03µs        ? ?/sec
utf8view/long_24b/list=64/match=50%                                  1.02     86.6±0.35µs        ? ?/sec    1.00     85.2±0.39µs        ? ?/sec
utf8view/mixed_len/list=16/match=0%                                  1.00     31.4±0.07µs        ? ?/sec    1.19     37.2±0.13µs        ? ?/sec
utf8view/mixed_len/list=16/match=50%                                 1.00     67.5±0.32µs        ? ?/sec    1.37     92.3±0.92µs        ? ?/sec
utf8view/mixed_len/list=64/match=0%                                  1.00     35.5±0.16µs        ? ?/sec    1.05     37.2±0.10µs        ? ?/sec
utf8view/mixed_len/list=64/match=50%                                 1.00     81.6±0.34µs        ? ?/sec    1.25    102.2±0.79µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=0%                       1.00     42.7±0.20µs        ? ?/sec    1.09     46.7±0.48µs        ? ?/sec
utf8view/shared_prefix/pfx=12/list=32/match=50%                      1.02     87.2±0.76µs        ? ?/sec    1.00     85.5±0.33µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=0%                       1.00     41.6±0.22µs        ? ?/sec    1.05     43.5±0.02µs        ? ?/sec
utf8view/shared_prefix/pfx=16/list=64/match=50%                      1.01     86.3±0.41µs        ? ?/sec    1.00     85.1±0.39µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=0%                        1.00     30.2±0.09µs        ? ?/sec    1.08     32.7±0.06µs        ? ?/sec
utf8view/shared_prefix/pfx=8/list=16/match=50%                       1.02     74.2±0.35µs        ? ?/sec    1.00     72.8±0.28µs        ? ?/sec
utf8view/short_8b/list=16/match=0%                                   1.36     17.9±0.03µs        ? ?/sec    1.00     13.1±0.02µs        ? ?/sec
utf8view/short_8b/list=16/match=50%                                  1.91     37.3±0.16µs        ? ?/sec    1.00     19.5±0.27µs        ? ?/sec
utf8view/short_8b/list=256/match=0%                                  1.34     18.1±0.03µs        ? ?/sec    1.00     13.5±0.06µs        ? ?/sec
utf8view/short_8b/list=256/match=50%                                 1.80     37.4±0.22µs        ? ?/sec    1.00     20.7±0.13µs        ? ?/sec
utf8view/short_8b/list=4/match=0%                                    1.60     18.4±0.03µs        ? ?/sec    1.00     11.5±0.01µs        ? ?/sec
utf8view/short_8b/list=4/match=50%                                   3.30     38.0±0.16µs        ? ?/sec    1.00     11.5±0.01µs        ? ?/sec
utf8view/short_8b/list=64/match=0%                                   1.43     18.7±0.33µs        ? ?/sec    1.00     13.1±0.11µs        ? ?/sec
utf8view/short_8b/list=64/match=50%                                  1.50     37.0±0.18µs        ? ?/sec    1.00     24.7±0.32µs        ? ?/sec

Resource Usage

in_list_strategy — base (merge-base)

Metric Value
Wall time 1690.4s
Peak memory 41.7 MiB
Avg memory 29.4 MiB
CPU user 1850.5s
CPU sys 1.6s
Peak spill 0 B

in_list_strategy — branch

Metric Value
Wall time 1685.4s
Peak memory 41.3 MiB
Avg memory 29.8 MiB
CPU user 1841.8s
CPU sys 1.6s
Peak spill 0 B

File an issue against this benchmark runner

@alamb

alamb commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Merging

@alamb

alamb commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Thanks again for your patience @geoffreyclaude

@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 11, 2026
@alamb

alamb commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

merge queue failure seems to be infrastructure: https://github.com/apache/datafusion/actions/runs/34646039081/job/103420287587

@alamb
alamb added this pull request to the merge queue Sep 11, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 11, 2026
@geoffreyclaude

Copy link
Copy Markdown
Contributor Author

Thanks again for your patience @geoffreyclaude

Thank you for your meticulous reviews and always great feedback!

@alamb
alamb enabled auto-merge September 13, 2026 20:13
@alamb

alamb commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Thanks again for your patience @geoffreyclaude

Thank you for your meticulous reviews and always great feedback!

That is kind of you to say -- I just wish I had about 2x more time to devote to reviewing PRs

@alamb
alamb added this pull request to the merge queue Sep 13, 2026
Merged via the queue into apache:main with commit ffaea96 Sep 13, 2026
41 checks passed
@alamb

alamb commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Woohoo ! We got it in!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

physical-expr Changes to the physical-expr crates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants