1-- Stress run records, one row per benchmark per run: the same columns as2-- the JSONL written by internal/stress/benchrec (and read by DuckDB in3-- scripts/stress/load.sql). Loaded by scripts/stress/clickhouse-load.sh;4-- loading a run twice is harmless (ReplacingMergeTree, query with FINAL).5CREATE DATABASE IF NOT EXISTS stress;67CREATE TABLE IF NOT EXISTS stress.results8(9 run_id String,10 ts DateTime64(3, 'UTC'),11 git_sha LowCardinality(String),12 git_dirty Bool,13 go_version LowCardinality(String),14 goos LowCardinality(String),15 goarch LowCardinality(String),16 cpu LowCardinality(String),17 host LowCardinality(String),18 pkg LowCardinality(String),19 name String,20 procs UInt16,21 n UInt64,22 ns_op Float64,23 b_op Float64,24 allocs_op Float64,25 mb_s Float64,26 metrics Map(String, Float64)27)28ENGINE = ReplacingMergeTree29ORDER BY (cpu, name, ts, run_id);3031-- The latest run against the one before it on the same CPU, per32-- benchmark: what the Grafana regressions table and make stress-report33-- (DuckDB) both show.34CREATE VIEW IF NOT EXISTS stress.latest_vs_previous AS35WITH ranked AS36(37 SELECT run_id, cpu, row_number() OVER (PARTITION BY cpu ORDER BY started DESC) AS age38 FROM (SELECT run_id, cpu, min(ts) AS started FROM stress.results FINAL GROUP BY run_id, cpu)39)40SELECT l.cpu AS cpu, l.pkg AS pkg, l.name AS name,41 p.ns_op AS before_ns, l.ns_op AS after_ns,42 (l.ns_op - p.ns_op) / p.ns_op AS change43FROM stress.results AS l FINAL44JOIN ranked AS kl ON kl.run_id = l.run_id AND kl.cpu = l.cpu45JOIN stress.results AS p FINAL ON p.cpu = l.cpu AND p.pkg = l.pkg AND p.name = l.name46JOIN ranked AS kp ON kp.run_id = p.run_id AND kp.cpu = p.cpu47WHERE kl.age = 1 AND kp.age = 2;