data-warehouse domain’s duckdb-local reference platform (a
provider-less, single-node engine, the sibling of the tpc-ds suite). It has two
modes selected by params.mode:
reference(default) — run the 22 queries once (single stream), digest each result, emitqueries.json+summary.json. Cheap CI/offline path, scored byofficial-tpch-evaluator.official— the full official pipeline (Load → Power incl. RF1/RF2 → multi-stream Throughput → ACID), emittingofficial.jsonscored byofficial-tpch-qphh-evaluatorinto the officialQphH@Sizecomposite.
Official-mode numbers reproduce the official TPC-H formulas but are unaudited:
no TPC membership, no audit, no priced full-disclosure report. The RF1/RF2 refresh
set is clousight-generated. Every score says so in its
notes.Run reference mode (no cloud account)
Run official mode (QphH@Size)
Official mode requires selecting its evaluator (both evaluators supporttpc-h;
the reference one is chosen by default):
Scaling up
params.scale_factor sets the size (QphH is reported @Size), and
params.streams sets the number of concurrent Throughput query streams. It
defaults to the official minimum for the scale factor (SF1 → 2, SF10 → 3,
SF30 → 4, SF100 → 5, …). All three composites scale with SF, and
Throughput@Size grows with the stream count.
The query-stream permutations come from params.query_order:
official fails loudly if you ask for more streams than the shipped Appendix A
table covers — it never silently substitutes an unofficial order. Use
query_order: generated to scale past S = 2 (each stream still runs all 22
queries, so the throughput metric is correct; only strict comparability to a
published run needs the exact Appendix A sequences). The chosen ordering is
recorded in official.json as ordering_source and folded into the run’s
dataset digest.What official mode measures
Theofficial-tpch-qphh-evaluator emits these tpc-h.* measurements:
Official mode makes no correctness claim: the Power test’s queries run
AFTER RF1 has refreshed the data, so their results legitimately differ from the
pristine-data references — comparing them would mislabel correct behavior as
failure. Correctness (verified against the official answers) rides the
reference mode.
ACID Durability is reported as n/a (no crash/recovery harness on embedded
DuckDB) and therefore omitted from the measurement set. ACID is an independent
pass/fail gate — it is not part of the QphH@Size composite.
All carry official=True — a provenance flag (“emitted by the suite’s
recognized evaluator”), not an audit claim; drift is carried by
reproducibility_class.
Correctness: verified official answers
The pinned references for SF 1, 0.1 and 0.01 were each verified cell-by-cell against DuckDB’s officialtpch_answers() answer set at capture time (all
22 queries, numeric cells at the shared 2-dp rounding, order-insensitive rows) —
queries_passed at those scale factors says so in its notes. Other scale
factors carry no correctness claim until you capture a reference
(scripts/capture_tpch_reference.py --sf <sf>); still not an audited TPC result.
Price/performance (price/QphH)
Supply your system price through the pricing feed and thepricing enricher
emits the official-style composite (unaudited — the price is your own input,
e.g. a 3-year TCO or a monthly subscription):
tpc-h.qphh_at_size matches (and provider/region filters, when
given) gains extensions.pricing.price_performance[] with
price_per_unit_perf = price / QphH. The bundled seed ships no system
prices — a price/perf number never comes from invented data, and it can never
change the verdict (enrichers are additive by contract).
Out of scope (today)
Real-SUTconfig-connect engines (duckdb-local only), and extending the official
Appendix A permutation table beyond streams 0–2 (use query_order: generated to
scale in the meantime). Very large scale factors are bounded by single-node DuckDB
memory/disk. Durability crash-recovery is not tested on embedded DuckDB.