Validate TPC-DS results against Vortex and Parquet - #9863
Conversation
Merging this PR will degrade performance by 4.03%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | WallTime | filtered_owned_i64_avx2[OneNullInEight] |
21.8 µs | 26 µs | -16.11% |
| ❌ | WallTime | dict_canonicalize_gt_u8_neon[1000000] |
487.5 µs | 579.6 µs | -15.89% |
| ❌ | WallTime | mul_u32_nonnull_avx512 |
5.6 µs | 6.2 µs | -10.45% |
| ⚡ | WallTime | dict_canonicalize_gt_u8_avx2[16000000] |
7.9 ms | 6.8 ms | +16.28% |
| ⚡ | WallTime | dict_canonicalize_gt_u8_avx2[1000000] |
465.4 µs | 420 µs | +10.82% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing ji/tpcds-slt-results (7ca2bde) with ji/tpcds-slt-plans (c5957b6)2
Footnotes
-
1505 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
-
No successful run was found on
ji/tpcds-slt-plans(6fa1cf0) during the generation of this report, so fa2832b was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩
Add `results/q1` to `results/q99` for both engines, from the same upstream queries in `vortex-bench/sql/tpcds` the plans already cover, run unchanged. `tpcds.slt` now asserts the result records as well as the plans, and `parquet.slt` reruns the same records against the Parquet fixtures so both formats have to agree. All 99 queries return the recorded rows on both engines and in both formats, and no tie-breaking edits to the upstream queries were needed. Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L57FHoJ15heJVNaqgRq7xB
c9cd684 to
7ca2bde
Compare
Summary
Second of two stacked PRs adding TPC-DS to the SLT suite. Stacked on #9861 — review and merge that one first; this PR targets
ji/tpcds-slt-plans, so its diff here shows only the results work.#9861 adds the fixtures and asserts the 99 EXPLAIN plans. This one adds the result records, so the suite checks what the queries return as well as how they are planned, and reruns them against Parquet so both formats have to agree.
Changes
results/q1.slt.notoresults/q99.slt.nofor both engines, from the same upstream queries invortex-bench/sql/tpcdsthe plans already cover, run unchanged.tpcds.sltnow includesresults/*.slt.noalongsideplans/*.slt.no, so each engine asserts results and plans against Vortex.parquet.sltper engine reruns the same result records against the original Parquet fixtures, so a Vortex-only result difference fails the suite.results/q*.slt.noandparquet.slt, replacing the interim "plans only for now" note from Add TPC-DS SLT plan tests #9861.All 99 queries return the recorded rows on both engines and in both formats, and none of the upstream queries needed tie-breaking
ORDER BYedits — unlike ClickBench, TPC-DS specifies a total order wherever it matters.The diff is 198 generated result files plus two
parquet.sltdrivers, two one-linetpcds.sltchanges, and the README paragraph.Testing
The result records are themselves the new tests. I could not run them in this environment — the container has no
flatc, sovortex-sqllogictestdoes not build here at all (failed to run flatc: No such file or directory); this is unrelated to the change. Verification is left to CI.Earlier in this work, before the split, the combined suite passed on both engines and both formats.
🤖 Generated with Claude Code
https://claude.ai/code/session_01L57FHoJ15heJVNaqgRq7xB
Generated by Claude Code