diff --git a/Cargo.toml b/Cargo.toml index 9abe9e379a2..199796a32c5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -158,7 +158,8 @@ datafusion-sqllogictest = { version = "54" } divan = { package = "codspeed-divan-compat", version = "5.0.0" } enum-iterator = "2.0.0" env_logger = "0.11" -fastlanes = "0.6.0" +# Pinned: fastlanes 0.6.2 changed the bit-transpose API and breaks the lock-free wasm-test build. +fastlanes = "=0.6.1" flatbuffers = "25.2.10" fsst-rs = "0.6.0" futures = { version = "0.3.31", default-features = false } diff --git a/scripts/compare-benchmark-jsons.py b/scripts/compare-benchmark-jsons.py index ffd899b55b5..8124b9464e6 100644 --- a/scripts/compare-benchmark-jsons.py +++ b/scripts/compare-benchmark-jsons.py @@ -861,8 +861,9 @@ def format_file_size_report(base_rows: pd.DataFrame, pr_rows: pd.DataFrame) -> s return "" base_data = {key: value for key, value in base_data.items() if key not in ignored} - pr_scopes = {(benchmark, scale_factor) for benchmark, scale_factor, _file_format, _file_name in pr_data} - base_data = {key: value for key, value in base_data.items() if key[:2] in pr_scopes} + # Omit baseline files whose (benchmark, scale factor, format) the PR run skipped entirely. + pr_scopes = {(benchmark, scale_factor, file_format) for benchmark, scale_factor, file_format, _file_name in pr_data} + base_data = {key: value for key, value in base_data.items() if key[:3] in pr_scopes} if not base_data: return "_No baseline file sizes found for base commit._" diff --git a/scripts/tests/test_benchmark_reporting.py b/scripts/tests/test_benchmark_reporting.py index 024d5b75e67..e2b829f1d86 100644 --- a/scripts/tests/test_benchmark_reporting.py +++ b/scripts/tests/test_benchmark_reporting.py @@ -662,6 +662,29 @@ def test_file_size_report_ignores_baseline_rows_outside_pr_scope() -> None: assert "| part-0.vortex | 1.0 |" not in report +def test_file_size_report_omits_formats_the_pr_run_skipped() -> None: + compare = load_compare_module() + + report = compare.format_file_size_report( + pd.DataFrame( + [ + file_size_record_for("base-sha", 100, "tpch", "10", "vortex-file-compressed", "part-0.vortex"), + file_size_record_for("base-sha", 80, "tpch", "10", "vortex-compact", "part-0.vortex"), + file_size_record_for("base-sha", 5, "tpch", "10", "vortex-compact", "duckdb.db"), + ] + ), + pd.DataFrame( + [ + file_size_record_for("pr-sha", 125, "tpch", "10", "vortex-file-compressed", "part-0.vortex"), + ] + ), + ) + + assert "File Size Changes (1 files changed, +25.0% overall, 1↑ 0↓)" in report + assert "vortex-compact" not in report + assert "-100.0%" not in report + + def test_capture_file_sizes_emits_shared_benchmark_rows(tmp_path: Path) -> None: data_dir = tmp_path / "data" format_dir = data_dir / "tpch" / "10" / "vortex-file-compressed" diff --git a/vortex-btrblocks/tests/snapshots/golden__compact__list_of_int_runs.snap b/vortex-btrblocks/tests/snapshots/golden__compact__list_of_int_runs.snap index 77a26802dd1..88274daf4b1 100644 --- a/vortex-btrblocks/tests/snapshots/golden__compact__list_of_int_runs.snap +++ b/vortex-btrblocks/tests/snapshots/golden__compact__list_of_int_runs.snap @@ -3,15 +3,11 @@ source: vortex-btrblocks/tests/golden.rs expression: rendered --- input: list(i32), len=4066, nbytes=81804 -root: vortex.list(list(i32), len=4066) nbytes=4748 +root: vortex.list(list(i32), len=4066) nbytes=4434 metadata: elements: vortex.zigzag(i32, len=16384) nbytes=2969 metadata: encoded: vortex.pco(u32, len=16384) nbytes=2969 metadata: ptype: u32, nrows: 16384, slice: 0..16384 - offsets: fastlanes.delta(u16, len=4067) nbytes=1779 - metadata: offset: 0 - bases: vortex.pco(u16, len=256) nbytes=243 - metadata: ptype: u16, nrows: 256, slice: 0..256 - deltas: fastlanes.bitpacked(u16, len=4096) nbytes=1536 - metadata: bit_width: 3, offset: 0 + offsets: vortex.pco(u16, len=4067) nbytes=1465 + metadata: ptype: u16, nrows: 4067, slice: 0..4067