Repository navigation
feat(array): extend BETWEEN execution across encodings - #10378
joseph-isaacs wants to merge 1 commit into
Conversation
Extract extension storage delegation, its regression tests, and benchmark from the V2 scan driver PR. Add constant-bound dictionary and run-end kernels, masked-child reduction, monotone sequence range evaluation, and FoR interval translation that accounts for wrapping subtraction. Reuse existing comparison kernels for Patched, VarBin, DateTimeParts, FSST, and OnPair. Decline when either comparison is unsupported so the canonical fallback can still decode the original input once. Add regression cases for strictness, nulls, row-bound fallback, run-end offsets, descending and unsigned sequences, and signed/unsigned FoR wraps. Validation: 154 targeted BETWEEN tests passed across the seven affected crates. All-target/all-feature Clippy with warnings denied, pinned-nightly Rust formatting, and patch whitespace checks passed. Signed-off-by: Joe Isaacs <[email protected]>
commented
Oct 7, 2026
Merging this PR will regress 2 benchmarks
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | chunked_opt_bool_canonical_into[(1000, 10)] |
59.5 µs | 69.5 µs | -14.33% |
| ❌ | WallTime | bitpack_blocked_compress_avx2 |
6.7 µs | 7.6 µs | -11.76% |
| ⚡ | Simulation | decompress[u32, (1000, 256)] |
54.9 µs | 32.9 µs | +66.82% |
| ⚡ | Simulation | take[routing/grouped_chunks/primitive/nonnull/chunks=32/indices=1000] |
421.6 µs | 380.2 µs | +10.88% |
| 🆕 | WallTime | between_avx2[false, 262144] |
N/A | 21.6 µs | N/A |
| 🆕 | WallTime | between_avx2[false, 8192] |
N/A | 1.6 µs | N/A |
| 🆕 | WallTime | between_avx2[true, 262144] |
N/A | 21.7 µs | N/A |
| 🆕 | WallTime | between_avx2[true, 8192] |
N/A | 1.7 µs | N/A |
| 🆕 | WallTime | two_compares_avx2[false, 262144] |
N/A | 84.7 µs | N/A |
| 🆕 | WallTime | two_compares_avx2[false, 8192] |
N/A | 7.7 µs | N/A |
| 🆕 | WallTime | two_compares_avx2[true, 262144] |
N/A | 96.4 µs | N/A |
| 🆕 | WallTime | two_compares_avx2[true, 8192] |
N/A | 8.6 µs | N/A |
| 🆕 | WallTime | between_avx512[false, 262144] |
N/A | 21.6 µs | N/A |
| 🆕 | WallTime | between_avx512[false, 8192] |
N/A | 1.6 µs | N/A |
| 🆕 | WallTime | between_avx512[true, 262144] |
N/A | 21.8 µs | N/A |
| 🆕 | WallTime | between_avx512[true, 8192] |
N/A | 1.7 µs | N/A |
| 🆕 | WallTime | two_compares_avx512[false, 262144] |
N/A | 54.4 µs | N/A |
| 🆕 | WallTime | two_compares_avx512[false, 8192] |
N/A | 6.6 µs | N/A |
| 🆕 | WallTime | two_compares_avx512[true, 262144] |
N/A | 66 µs | N/A |
| 🆕 | WallTime | two_compares_avx512[true, 8192] |
N/A | 7.8 µs | N/A |
| ... | ... | ... | ... | ... | ... |
ℹ️ Only the first 20 benchmarks are displayed. Go to the app to view all benchmarks.
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing ji/between-remaining-encodings (e31e4d0) with develop (438600d)
Footnotes
-
518 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
commented
Oct 7, 2026
Benchmarks: PolarSignals Profiling 📖Commits: PR datafusion / vortex-file-compressed / ns (1.006x ➖, 0↑ 0↓)
No file size changes detected. |
commented
Oct 7, 2026
Benchmarks: String Encoding 📖Commits: PR vortex / vortex-file-compressed / ms (1.002x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / % (1.000x ➖, 0↑ 0↓)
|
commented
Oct 7, 2026
Benchmarks: FineWeb NVMe 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.980x ➖, 1↑ 0↓)
datafusion / vortex-compact / ns (1.037x ➖, 0↑ 1↓)
datafusion / parquet / ns (0.991x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.932x ➖, 5↑ 1↓)
duckdb / vortex-compact / ns (0.930x ➖, 1↑ 0↓)
duckdb / parquet / ns (0.992x ➖, 0↑ 0↓)
No file size changes detected. |
commented
Oct 7, 2026
Benchmarks: TPC-H SF=1 on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.998x ➖, 0↑ 0↓)
datafusion / vortex-compact / ns (1.001x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.005x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.991x ➖, 0↑ 0↓)
duckdb / vortex-compact / ns (0.995x ➖, 0↑ 0↓)
duckdb / parquet / ns (0.995x ➖, 1↑ 0↓)
No file size changes detected. |
commented
Oct 7, 2026
Benchmarks: Clickbench Sorted on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.019x ➖, 0↑ 1↓)
datafusion / vortex-compact / ns (1.002x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.008x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.008x ➖, 0↑ 1↓)
duckdb / vortex-compact / ns (0.986x ➖, 1↑ 0↓)
duckdb / parquet / ns (1.021x ➖, 1↑ 2↓)
File Size Changes (200 files changed, +0.0% overall, 124↑ 76↓)
Totals:
|
commented
Oct 7, 2026
Benchmarks: Appian on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-compact / ns (1.009x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.002x ➖, 0↑ 0↓)
duckdb / vortex-compact / ns (0.996x ➖, 0↑ 0↓)
duckdb / parquet / ns (1.011x ➖, 0↑ 0↓)
No file size changes detected. |
commented
Oct 7, 2026
Benchmarks: FineWeb S3 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.734x ➖, 4↑ 0↓)
datafusion / vortex-compact / ns (1.056x ➖, 0↑ 1↓)
datafusion / parquet / ns (0.539x ✅, 8↑ 0↓)
duckdb / vortex-file-compressed / ns (0.776x ➖, 3↑ 0↓)
duckdb / vortex-compact / ns (1.006x ➖, 1↑ 2↓)
duckdb / parquet / ns (0.615x ✅, 7↑ 0↓)
|
commented
Oct 7, 2026
Benchmarks: Clickbench on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.997x ➖, 0↑ 0↓)
datafusion / vortex-compact / ns (1.000x ➖, 0↑ 0↓)
datafusion / parquet / ns (0.997x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.985x ➖, 4↑ 0↓)
duckdb / vortex-compact / ns (0.985x ➖, 3↑ 1↓)
duckdb / parquet / ns (0.981x ➖, 2↑ 0↓)
No file size changes detected. |
commented
Oct 7, 2026
Benchmarks: TPC-DS SF=1 on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.998x ➖, 0↑ 0↓)
datafusion / vortex-compact / ns (1.001x ➖, 0↑ 1↓)
datafusion / parquet / ns (0.998x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.005x ➖, 0↑ 2↓)
duckdb / vortex-compact / ns (0.998x ➖, 4↑ 1↓)
duckdb / parquet / ns (0.994x ➖, 4↑ 0↓)
No file size changes detected. |
commented
Oct 7, 2026
Benchmarks: TPC-H SF=10 on NVME 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.995x ➖, 0↑ 0↓)
datafusion / vortex-compact / ns (0.984x ➖, 1↑ 0↓)
datafusion / parquet / ns (0.999x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.998x ➖, 0↑ 0↓)
duckdb / vortex-compact / ns (0.992x ➖, 0↑ 0↓)
duckdb / parquet / ns (1.005x ➖, 0↑ 0↓)
No file size changes detected. |
commented
Oct 7, 2026
Benchmarks: Statistical and Population Genetics 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.996x ➖, 0↑ 0↓)
datafusion / vortex-compact / ns (1.008x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.002x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.003x ➖, 0↑ 0↓)
duckdb / vortex-compact / ns (1.001x ➖, 0↑ 0↓)
duckdb / parquet / ns (0.997x ➖, 0↑ 0↓)
No file size changes detected. |
commented
Oct 7, 2026
Benchmarks: Compression 📖Commits: PR vortex / vortex-file-compressed / ns (0.977x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / bytes (1.000x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / ratio (0.986x ➖, 0↑ 0↓)
vortex / parquet / ns (0.998x ➖, 0↑ 0↓)
vortex / parquet / bytes (1.000x ➖, 0↑ 0↓)
vortex / arrow-ipc / ns (0.988x ➖, 0↑ 0↓)
vortex / arrow-ipc / bytes (1.000x ➖, 0↑ 0↓)
|
commented
Oct 7, 2026
Benchmarks: TPC-H SF=1 on S3 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.066x ➖, 1↑ 3↓)
datafusion / vortex-compact / ns (0.872x ➖, 3↑ 1↓)
datafusion / parquet / ns (0.883x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed / ns (0.912x ➖, 3↑ 1↓)
duckdb / vortex-compact / ns (0.880x ➖, 2↑ 1↓)
duckdb / parquet / ns (0.904x ➖, 2↑ 0↓)
|
commented
Oct 7, 2026
Benchmarks: TPC-H SF=10 on S3 📖Commits: PR How to read Verdict and Engines
datafusion / vortex-compact / ns (1.011x ➖, 1↑ 2↓)
datafusion / parquet / ns (0.866x ➖, 5↑ 2↓)
duckdb / vortex-compact / ns (0.973x ➖, 1↑ 0↓)
duckdb / parquet / ns (0.993x ➖, 1↑ 1↓)
|
commented
Oct 7, 2026
Benchmarks: Random Access 📖Commits: PR How to read Verdict and Engines
vortex / arrow-ipc / ns (0.997x ➖, 1↑ 0↓)
random-access / vortex-file-compressed / ns (1.006x ➖, 0↑ 1↓)
random-access / parquet / ns (1.004x ➖, 0↑ 0↓)
random-access / lance / ns (1.005x ➖, 0↑ 0↓)
|
commented
Oct 7, 2026
Benchmarks: Random Access (S3) 📖Commits: PR How to read Verdict and Engines
random-access / vortex-file-compressed / ns (0.966x ➖, 3↑ 2↓)
random-access / parquet / ns (1.014x ➖, 0↑ 0↓)
random-access / lance / ns (0.968x ➖, 0↑ 1↓)
|
commented
Oct 24, 2026
|
This PR has been marked as stale because it has been open for 14 days with no activity. Please comment or remove the stale label if you wish to keep it active, otherwise it will be closed in 7 days |
commented
Nov 5, 2026
|
This PR was closed because it has been inactive for 7 days since being marked as stale. |
Range predicates on encoded arrays can fall back to materializing the entire input. Add encoding-aware
BETWEENpaths so the predicate can run on compressed children, dictionary values, or sequence metadata.Extracts the extension implementation, tests, and benchmark from #10339. The existing primitive, decimal, constant, ALP, sparse, bit-packed, and chunked paths remain in place. DecimalByteParts is already covered by merged #10152.
Validation: 154 targeted BETWEEN tests passed across the seven affected crates. All-target/all-feature Clippy with
-D warnings, pinned-nightly Rust formatting, and patch whitespace checks passed. Regression cases cover strictness, nulls, row-bound fallback, dictionary codes, run offsets, signed and unsigned sequence limits, FoR wraparound, string bounds, patched values, and non-midnight timestamps.The extension microbenchmark is included. The additional encoding paths have not yet been benchmarked; cross-platform CI is still running.