36 lines
1.6 KiB
PL/PgSQL
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;
|