feat[file]: gate the writer on the session's enabled editions - #8946
Conversation
Polar Signals Profiling ResultsLatest Run
Previous Runs (14)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals Profiling 📖Vortex (geomean): 1.016x ➖ How to read Verdict and Engines
datafusion / vortex-file-compressed (1.016x ➖, 0↑ 1↓)
File Size Changes (1 files changed, +0.0% overall, 1↑ 0↓)
Totals:
|
Benchmarks: FineWeb NVMe 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.057x ➖, 0↑ 2↓)
datafusion / vortex-compact (1.043x ➖, 0↑ 1↓)
datafusion / parquet (1.026x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (1.052x ➖, 0↑ 1↓)
duckdb / vortex-compact (1.022x ➖, 0↑ 0↓)
duckdb / parquet (1.011x ➖, 0↑ 0↓)
File Size Changes (2 files changed, +0.0% overall, 2↑ 0↓)
Totals:
|
Benchmarks: TPC-H SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.011x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.000x ➖, 0↑ 0↓)
datafusion / parquet (1.026x ➖, 1↑ 1↓)
duckdb / vortex-file-compressed (1.017x ➖, 1↑ 0↓)
duckdb / vortex-compact (0.997x ➖, 1↑ 0↓)
duckdb / parquet (1.052x ➖, 0↑ 6↓)
duckdb / duckdb (1.010x ➖, 0↑ 0↓)
File Size Changes (34 files changed, +0.0% overall, 18↑ 16↓)
Totals:
|
Benchmarks: Vortex queries 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.060x ➖, 0↑ 0↓)
datafusion / parquet (1.030x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.068x ➖, 0↑ 0↓)
duckdb / parquet (1.016x ➖, 0↑ 0↓)
File Size Changes (1 files changed, +0.0% overall, 1↑ 0↓)
Totals:
|
Benchmarks: TPC-DS SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.013x ➖, 0↑ 2↓)
datafusion / vortex-compact (1.077x ➖, 0↑ 37↓)
datafusion / parquet (1.010x ➖, 3↑ 2↓)
duckdb / vortex-file-compressed (1.103x ❌, 0↑ 54↓)
duckdb / vortex-compact (1.081x ➖, 0↑ 28↓)
duckdb / parquet (1.059x ➖, 0↑ 22↓)
duckdb / duckdb (1.083x ➖, 0↑ 34↓)
File Size Changes (48 files changed, +0.0% overall, 48↑ 0↓)
Totals:
|
Benchmarks: FineWeb S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.027x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.107x ➖, 0↑ 2↓)
datafusion / parquet (1.006x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (0.967x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.009x ➖, 0↑ 0↓)
duckdb / parquet (1.015x ➖, 0↑ 0↓)
|
Benchmarks: Statistical and Population Genetics 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
duckdb / vortex-file-compressed (1.022x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.019x ➖, 0↑ 0↓)
duckdb / parquet (1.015x ➖, 0↑ 0↓)
File Size Changes (2 files changed, +0.0% overall, 2↑ 0↓)
Totals:
|
Benchmarks: Clickbench Sorted on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.128x ❌, 0↑ 5↓)
datafusion / parquet (1.021x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (1.021x ➖, 0↑ 1↓)
duckdb / parquet (1.008x ➖, 0↑ 0↓)
duckdb / duckdb (1.014x ➖, 0↑ 0↓)
File Size Changes (201 files changed, +0.0% overall, 101↑ 100↓)
Totals:
|
Benchmarks: TPC-H SF=10 on NVME 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.866x ✅, 14↑ 0↓)
datafusion / vortex-compact (0.881x ✅, 14↑ 0↓)
datafusion / parquet (0.977x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (0.925x ➖, 5↑ 0↓)
duckdb / vortex-compact (0.953x ➖, 2↑ 0↓)
duckdb / parquet (1.026x ➖, 1↑ 4↓)
duckdb / duckdb (0.972x ➖, 0↑ 0↓)
File Size Changes (64 files changed, +0.1% overall, 48↑ 16↓)
Totals:
|
Benchmarks: Clickbench on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.992x ➖, 1↑ 1↓)
datafusion / parquet (1.002x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.008x ➖, 0↑ 1↓)
duckdb / parquet (0.999x ➖, 1↑ 0↓)
duckdb / duckdb (1.003x ➖, 1↑ 1↓)
File Size Changes (201 files changed, -0.0% overall, 200↑ 1↓)
Totals:
|
Benchmarks: Random Access 📖Vortex (geomean): 0.869x ✅ How to read Verdict and Engines
unknown / unknown (0.880x ✅, 18↑ 0↓)
|
Benchmarks: TPC-H SF=1 on S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.210x ➖, 0↑ 10↓)
datafusion / vortex-compact (1.137x ➖, 0↑ 2↓)
datafusion / parquet (1.179x ➖, 0↑ 8↓)
duckdb / vortex-file-compressed (1.082x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.040x ➖, 0↑ 0↓)
duckdb / parquet (1.269x ➖, 0↑ 8↓)
|
4a21a9f to
16b2711
Compare
Benchmarks: Appian on NVME 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.245x ❌, 0↑ 8↓)
datafusion / parquet (1.325x ❌, 0↑ 8↓)
duckdb / vortex-file-compressed (1.324x ❌, 0↑ 8↓)
duckdb / parquet (1.308x ❌, 0↑ 8↓)
duckdb / duckdb (1.274x ❌, 0↑ 8↓)
File Size Changes (19 files changed, -0.0% overall, 18↑ 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 (0.984x ➖, 1↑ 1↓)
datafusion / vortex-compact (1.023x ➖, 1↑ 1↓)
datafusion / parquet (1.134x ➖, 0↑ 4↓)
duckdb / vortex-file-compressed (0.764x ➖, 8↑ 0↓)
duckdb / vortex-compact (0.742x ➖, 8↑ 0↓)
duckdb / parquet (1.228x ➖, 0↑ 6↓)
|
Benchmarks: Compression 📖Vortex (geomean): 0.998x ➖ How to read Verdict and Engines
unknown / unknown (1.009x ➖, 3↑ 2↓)
|
16b2711 to
cee4bd1
Compare
Merging this PR will not alter performance
Comparing Footnotes
|
cee4bd1 to
5fd3a61
Compare
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
5fd3a61 to
e0fd1f9
Compare
| pub(crate) fn new_session() -> Box<VortexSession> { | ||
| let session = VortexSession::default().with_handle(RUNTIME.handle()); | ||
| session | ||
| .enable_edition(DEFAULT_UNSTABLE_EDITION) |
There was a problem hiding this comment.
@AdamGS what's blocking parquet variant encoding from being stable?
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
6c3c022 to
71830c2
Compare
Summary
The file writer previously drew its permitted encodings from a static
ALLOWED_ENCODINGSset compiled intovortex-file. The only way to write a narrower or wider set was to override the write strategy by hand, and the writer's policy was disconnected from the editions the session had registered. This PR makes the writer's encoding policy come from the session's enabled editions.Final PR in the stack, on top of #8945 (
add enabled-editions selection to the session) and #8944 (require schemes to declare their produced encodings).Changes
VortexWriteOptions::newresolvesenabled_encoding_idsand applies it both to the write strategy and to theArrayContext, so a replacement strategy cannot widen the policy.WriteStrategyBuilder::with_allow_encodingsnow also filters the BtrBlocks compressor viaretain_allowed_encodings(from feat[compressor]: require schemes to declare their produced encodings #8944), in either configuration order, so forbidden encodings are never produced rather than being rejected after the fact.ALLOWED_ENCODINGSis removed.register_default_encodingsstill registers everything for reading; the default session's write policy comes from the editions enabled byenable_default_editions.EnabledEditionsvariable permit no edition encodings, so lower-level test sessions invortex-file,vortex-layoutandvortex-parquet-variantopt in explicitly via a sharedenable_all_registered_array_encodingstest helper.The
vortex/src/editions/tests.rsround-trip tests exercise every writer customization path (default strategy, replacement builders, opaque/probe compressors, custom flat strategies and field writers) to confirm none can emit an encoding outside the enabled editions.