em_traces_ci/schema.sql
2025-12-16 11:03:57 +00:00

36 lines
1.6 KiB
PL/PgSQL

-- schema.sql
BEGIN;
CREATE TABLE schema_version (
version_id SERIAL PRIMARY KEY,
applied_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
description TEXT NOT NULL
);
CREATE TABLE em_metrics (
em_metric_id BIGSERIAL PRIMARY KEY,
run_uuid UUID NOT NULL,
ci_pipeline VARCHAR(128) NOT NULL,
job_name VARCHAR(128) NOT NULL,
commit_hash CHAR(40) NOT NULL,
trace_version SMALLINT NOT NULL DEFAULT 1,
captured_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
peak_amplitude NUMERIC(12,6) NOT NULL,
median_bandpower NUMERIC(12,6) NOT NULL,
crosscorr_with_clockevents NUMERIC(6,4) NOT NULL,
hf_outlier_flag BOOLEAN NOT NULL DEFAULT FALSE,
spacer_config VARCHAR(64),
sampling_policy VARCHAR(64),
notes TEXT,
CONSTRAINT em_metrics_peak_nonneg CHECK (peak_amplitude >= 0),
CONSTRAINT em_metrics_band_nonneg CHECK (median_bandpower >= 0),
CONSTRAINT em_metrics_corr_range CHECK (crosscorr_with_clockevents BETWEEN -1 AND 1),
UNIQUE (run_uuid, job_name, trace_version)
);
CREATE INDEX idx_em_metrics_captured_at ON em_metrics (captured_at DESC);
CREATE INDEX idx_em_metrics_pipeline_job ON em_metrics (ci_pipeline, job_name);
CREATE INDEX idx_em_metrics_commit ON em_metrics (commit_hash);
CREATE INDEX idx_em_metrics_outlier ON em_metrics (hf_outlier_flag) WHERE hf_outlier_flag;
COMMIT;