Repository navigation
Lazily untranspose DeltaArray validity take #2 - #8890
robert3005 wants to merge 3 commits into
Conversation
The reapplied lazy Delta validity (#8725) broke in two ways once arrays went through slicing or a file round-trip: - Delta::validity required the deltas' storage validity to be a raw Bool array, but Validity::Array may be lazily encoded (e.g. a vortex.slice wrapper when the validity encoding has no static slice reduction, or a re-encoded array after a file round-trip), failing with "DeltaArray storage validity must be a BoolArray, got vortex.slice". TransposedBool now wraps the validity as a child array of any encoding and canonicalizes it at execution time, where an ExecutionCtx is available. - untranspose_bitbuffer asserted 8-byte alignment, panicking with "Transposed buffer must be 8 byte aligned" on buffers viewed at arbitrary byte offsets (e.g. file segments). The transpose routines now normalize sliced views to chunk-aligned bytes and fall back to a copy path with unaligned-safe loads, keeping the in-place fast path for uniquely-owned aligned buffers. This also fixes bit-offset views being untransposed from the wrong chunk boundaries. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Robert Kruszewski <github@robertk.io>
|
This fixes the cases where the validity has been transformed. Need to investigate more how the misalignment happens |
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.077x ➖, 0↑ 1↓)
datafusion / parquet (1.027x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.067x ➖, 0↑ 0↓)
duckdb / parquet (1.011x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: PolarSignals Profiling 📖Vortex (geomean): 1.000x ➖ How to read Verdict and Engines
datafusion / vortex-file-compressed (1.000x ➖, 1↑ 0↓)
No file size changes detected. |
Benchmarks: FineWeb NVMe 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.809x ✅, 8↑ 0↓)
datafusion / vortex-compact (0.855x ✅, 9↑ 0↓)
datafusion / parquet (0.833x ✅, 9↑ 0↓)
duckdb / vortex-file-compressed (0.807x ✅, 9↑ 0↓)
duckdb / vortex-compact (0.847x ✅, 9↑ 0↓)
duckdb / parquet (0.882x ✅, 8↑ 0↓)
No file size changes detected. |
Benchmarks: TPC-H SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.997x ➖, 0↑ 1↓)
datafusion / vortex-compact (1.047x ➖, 1↑ 5↓)
datafusion / parquet (1.097x ➖, 0↑ 9↓)
datafusion / arrow (1.014x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (0.997x ➖, 0↑ 1↓)
duckdb / vortex-compact (1.028x ➖, 0↑ 1↓)
duckdb / parquet (0.978x ➖, 1↑ 0↓)
duckdb / duckdb (1.036x ➖, 0↑ 2↓)
No file size changes detected. |
Benchmarks: TPC-DS SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.120x ❌, 0↑ 63↓)
datafusion / vortex-compact (1.095x ➖, 0↑ 43↓)
datafusion / parquet (1.121x ❌, 0↑ 65↓)
duckdb / vortex-file-compressed (1.095x ➖, 0↑ 44↓)
duckdb / vortex-compact (1.014x ➖, 0↑ 2↓)
duckdb / parquet (1.058x ➖, 0↑ 10↓)
duckdb / duckdb (1.008x ➖, 1↑ 2↓)
No file size changes detected. |
Benchmarks: TPC-H SF=1 on S3 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.931x ➖, 3↑ 1↓)
datafusion / vortex-compact (0.970x ➖, 0↑ 0↓)
datafusion / parquet (0.973x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.023x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.981x ➖, 0↑ 0↓)
duckdb / parquet (1.023x ➖, 0↑ 0↓)
|
Benchmarks: FineWeb S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.094x ➖, 0↑ 2↓)
datafusion / vortex-compact (0.906x ➖, 0↑ 0↓)
datafusion / parquet (1.051x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (0.981x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.983x ➖, 0↑ 0↓)
duckdb / parquet (1.000x ➖, 0↑ 0↓)
|
Benchmarks: Statistical and Population Genetics 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
duckdb / vortex-file-compressed (1.041x ➖, 0↑ 1↓)
duckdb / vortex-compact (1.047x ➖, 0↑ 2↓)
duckdb / parquet (1.016x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Clickbench Sorted on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.037x ➖, 1↑ 2↓)
datafusion / parquet (0.975x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (0.892x ✅, 5↑ 0↓)
duckdb / parquet (0.882x ✅, 7↑ 0↓)
duckdb / duckdb (0.936x ➖, 1↑ 0↓)
File Size Changes (201 files changed, -0.0% overall, 96↑ 105↓)
Totals:
|
Benchmarks: Clickbench on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.008x ➖, 0↑ 2↓)
datafusion / parquet (0.992x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.003x ➖, 1↑ 2↓)
duckdb / parquet (0.993x ➖, 0↑ 0↓)
duckdb / duckdb (1.003x ➖, 1↑ 0↓)
File Size Changes (1 files changed, -0.0% overall, 0↑ 1↓)
Totals:
|
Benchmarks: TPC-H SF=10 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.929x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.958x ➖, 0↑ 0↓)
datafusion / parquet (0.898x ✅, 11↑ 0↓)
datafusion / arrow (0.857x ✅, 15↑ 0↓)
duckdb / vortex-file-compressed (1.000x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.999x ➖, 0↑ 0↓)
duckdb / parquet (0.997x ➖, 0↑ 0↓)
duckdb / duckdb (1.003x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Random Access 📖Vortex (geomean): 1.017x ➖ How to read Verdict and Engines
unknown / unknown (1.003x ➖, 2↑ 1↓)
|
Benchmarks: Appian on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.995x ➖, 0↑ 0↓)
datafusion / parquet (0.996x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.983x ➖, 0↑ 0↓)
duckdb / parquet (0.995x ➖, 0↑ 0↓)
duckdb / duckdb (0.973x ➖, 0↑ 0↓)
File Size Changes (1 files changed, -0.0% overall, 0↑ 1↓)
Totals:
|
Benchmarks: TPC-H SF=10 on S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.031x ➖, 1↑ 2↓)
datafusion / vortex-compact (1.011x ➖, 0↑ 0↓)
datafusion / parquet (1.012x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed (0.998x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.983x ➖, 0↑ 0↓)
duckdb / parquet (1.005x ➖, 0↑ 0↓)
|
Benchmarks: Compression 📖Vortex (geomean): 0.996x ➖ How to read Verdict and Engines
unknown / unknown (0.990x ➖, 3↑ 1↓)
|
|
we really should fix this s3 benchmarks |
|
I think #8903 will make it better |
|
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 |
|
There's something very weird about state of this branch in git, closing in favour of #9226 |
Lazily untranpose DeltaArray validity array