Latest Results
bench: generate SSB data natively instead of building the C dbgen
SSB has no Rust generator. Its C dbgen is TPC-H's dbgen with different cardinalities and draw order, and tpchgen already ports that stream model, so src/ssb/ssbgen/ drives tpchgen's primitives with SSB's table definitions and writes Parquet directly. No cmake, C compiler, duckdb CLI, or .tbl intermediates (~6.5 GB at SF 10); base data at SF 10 takes 14s instead of 91s.
Output is byte-identical to eyalroz/ssb-dbgen at ae1e254 for all five tables at SF 1 and SF 10, and the tests assert a SHA-256 per table. The module docs record the reference behaviours the port reproduces, such as the date table sharing TPC-H's ORDER slot in tdefs and the city and phone streams carrying over from supplier to customer. The reference derives its calendar via localtime(), so the date table depends on the host timezone; ours is frozen to GMT.
Scale factors outside the supported domain are rejected before anything is written, rather than producing plausible-looking but relationally invalid data: below 1 the reference's part cardinality formula is undefined, and above about 357 the sparse lo_orderkey outgrows the INTEGER the schema declares. Generated columns are non-null, matching the TPC-H schemas, and lo_shippriority is an integer in the row, the schema and the .tbl output.
Signed-off-by: mprammer <martin@spiraldb.com>
Co-Authored-By: Claude <noreply@anthropic.com> Latest Branches
-11%
-11%
+13%
© 2026 CodSpeed Technology