summaryrefslogtreecommitdiffstats
path: root/database/scripts/tabledefs-ranking.sql
blob: 468f6fcf9a3fc3434bdbbea639dda1a95bbc79c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
-- Table to keep available ranking statistic types:
DROP TABLE IF EXISTS rankingStat;
CREATE TABLE rankingStat (
    id BIGSERIAL PRIMARY KEY, value TEXT UNIQUE NOT NULL) WITH (OIDS=FALSE);
ALTER TABLE rankingStat OWNER TO postgres;
-- Pre-populate:
INSERT INTO rankingStat (value) VALUES
    ('QS'),    -- Quality score
    ('LCSSR'), -- Last chance stability score (last change regressing)
    ('LCSSI'), -- Last change stability score (last change improving)
    ('LCSS1R'), -- Last change stability score not considering history after
                -- last change (last change regressing)
    ('LCSS1I'); -- Last change stability score not considering history after
                -- last change (last change improving)


-- Table to store rankings:
DROP TABLE IF EXISTS ranking;
CREATE TABLE ranking
(
    id BIGSERIAL PRIMARY KEY,

    -- Environment:
    hostId BIGINT NOT NULL REFERENCES host ON DELETE CASCADE,
    platformId BIGINT NOT NULL REFERENCES platform ON DELETE CASCADE,

    -- Revision:
    branchId BIGINT NOT NULL REFERENCES branch ON DELETE CASCADE,
    sha1Id BIGINT NOT NULL REFERENCES sha1 ON DELETE CASCADE,

    -- Benchmark:
    benchmarkId BIGINT NOT NULL REFERENCES benchmark ON DELETE CASCADE,

    -- Metric:
    metricId BIGINT NOT NULL REFERENCES metric ON DELETE CASCADE,

    -- Ranking statistic type:
    statId BIGINT NOT NULL REFERENCES rankingStat ON DELETE CASCADE,

    -- Ranking statistic value:
    value REAL NOT NULL,

    -- Ranking position:
    pos INTEGER NOT NULL,

    UNIQUE (hostId, platformId, branchId, sha1Id, benchmarkId, metricId, statId)

) WITH (OIDS=FALSE);
ALTER TABLE ranking OWNER TO postgres;

-- Indexes:
CREATE INDEX ranking_host_idx ON ranking (hostId);
CREATE INDEX ranking_platform_idx ON ranking (platformId);
CREATE INDEX ranking_branch_idx ON ranking (branchId);
CREATE INDEX ranking_sha1_idx ON ranking (sha1Id);
CREATE INDEX ranking_benchmark_idx ON ranking (benchmarkId);
CREATE INDEX ranking_metric_idx ON ranking (metricId);
CREATE INDEX ranking_stat_idx ON ranking (statId);
CREATE INDEX ranking_pos_idx ON ranking (pos);