Add list length min-max statistics#8886
Conversation
Signed-off-by: Matt Katz <mhkatz97@gmail.com>
Merging this PR will degrade performance by 19.09%
Warning Please fix the performance issues or acknowledge them on CodSpeed. Performance Changes
Tip Investigate this regression by commenting Comparing Footnotes
|
Polar Signals Profiling ResultsLatest Run
Previous Runs (1)
Powered by Polar Signals Cloud |
Benchmarks: Vortex queries 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.088x ➖, 0↑ 0↓)
datafusion / parquet (1.051x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.092x ➖, 0↑ 1↓)
duckdb / parquet (1.027x ➖, 0↑ 0↓)
No file size changes detected. |
Signed-off-by: Matt Katz <mhkatz97@gmail.com>
Rationale for this change
Predicates over
list_length()currently lack zone-level length bounds, so they cannot eliminate zones without evaluating list offsets or sizes. Zoned statistics bind aggregates directly to root columns, so this adds one fused adapter for the minimum and maximum of the derived list lengths.What changes are included in this PR?
ListLengthMinMax, returning nullable{min_length, max_length}bounds for variable-length lists.ListLengthMinMaxas a default zoned aggregate for variable-length lists.list_length()minimum and maximum statistics to the corresponding fields.Validation:
cargo nextest run -p vortex-array -p vortex-layout(3,203 passed, 1 skipped)cargo clippy --all-targets --all-featurescargo +nightly fmt --allgit diff --checkWhat APIs are changed? Are there any user-facing changes?
This adds the public
ListLengthMinMaxaggregate and itsmin_lengthandmax_lengthresult-field constants. Newly written zoned layouts for variable-length lists include these length bounds, enablinglist_length()predicate pruning. Existing APIs are otherwise unchanged.