Preserve struct validity in StructLayout root projections#8810
Conversation
Signed-off-by: Matt Katz <mhkatz97@gmail.com>
StructLayout root projections
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
Benchmarks: Vortex queriesVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.067x ➖, 0↑ 0↓)
datafusion / parquet (0.986x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.057x ➖, 0↑ 0↓)
duckdb / parquet (1.025x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: PolarSignals ProfilingVortex (geomean): 0.978x ➖ How to read Verdict and Engines
datafusion / vortex-file-compressed (0.978x ➖, 0↑ 1↓)
No file size changes detected. |
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.961x ➖, 0↑ 0↓)
datafusion / parquet (0.944x ➖, 3↑ 0↓)
duckdb / vortex-file-compressed (0.926x ➖, 2↑ 0↓)
duckdb / parquet (0.955x ➖, 0↑ 0↓)
File Size Changes (2 files changed, -46.3% overall, 0↑ 2↓)
Totals:
|
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.014x ➖, 0↑ 0↓)
datafusion / parquet (0.996x ➖, 2↑ 1↓)
datafusion / arrow (1.014x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (1.017x ➖, 0↑ 0↓)
duckdb / parquet (1.049x ➖, 0↑ 4↓)
File Size Changes (10 files changed, -44.4% overall, 0↑ 10↓)
Totals:
|
Benchmarks: TPC-DS SF=1 on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.975x ➖, 0↑ 0↓)
datafusion / parquet (0.964x ➖, 6↑ 0↓)
duckdb / vortex-file-compressed (0.965x ➖, 4↑ 0↓)
duckdb / parquet (0.984x ➖, 1↑ 0↓)
File Size Changes (25 files changed, -43.5% overall, 0↑ 25↓)
Totals:
|
Benchmarks: FineWeb S3Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.161x ➖, 0↑ 2↓)
datafusion / parquet (1.010x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.041x ➖, 0↑ 1↓)
duckdb / parquet (1.029x ➖, 0↑ 0↓)
|
Benchmarks: Clickbench Sorted on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.007x ➖, 1↑ 1↓)
datafusion / parquet (1.020x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.076x ➖, 0↑ 2↓)
duckdb / parquet (1.030x ➖, 0↑ 0↓)
File Size Changes (201 files changed, -42.9% overall, 44↑ 157↓)
Totals:
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) How to read Verdict and Engines
duckdb / vortex-file-compressed (0.972x ➖, 0↑ 0↓)
duckdb / parquet (0.977x ➖, 0↑ 0↓)
File Size Changes (2 files changed, -32.3% overall, 0↑ 2↓)
Totals:
|
Benchmarks: Clickbench on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.971x ➖, 1↑ 1↓)
datafusion / parquet (0.964x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (0.947x ➖, 7↑ 0↓)
duckdb / parquet (0.988x ➖, 1↑ 0↓)
File Size Changes (101 files changed, -39.4% overall, 0↑ 101↓)
Totals:
|
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.978x ➖, 0↑ 0↓)
datafusion / parquet (0.986x ➖, 0↑ 0↓)
datafusion / arrow (0.968x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.989x ➖, 0↑ 0↓)
duckdb / parquet (0.998x ➖, 0↑ 0↓)
File Size Changes (25 files changed, -44.5% overall, 0↑ 25↓)
Totals:
|
Benchmarks: TPC-H SF=1 on S3Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.076x ➖, 0↑ 3↓)
datafusion / parquet (1.014x ➖, 0↑ 2↓)
duckdb / vortex-file-compressed (1.032x ➖, 0↑ 0↓)
duckdb / parquet (1.046x ➖, 0↑ 0↓)
|
StructLayoutexpands arootexpression into a non-nullablepackso its fields can be read independently. The reader previously pushed the parent validity into every field. This changed a null struct into a valid struct whose fields were all null, and changed the reconstructed dtypeRoot projections now restore validity on the reconstructed struct itself. Explicit pack and merge expressions keep their existing behavior.