]> git.xonotic.org Git - xonotic/xonstatdb.git/blob - triggers/games_ins_trg.sql
Add partitions through 2025.
[xonotic/xonstatdb.git] / triggers / games_ins_trg.sql
1 CREATE OR REPLACE FUNCTION games_ins()
2 RETURNS TRIGGER AS $$
3 BEGIN
4         IF (NEW.create_dt >= DATE '2020-01-01' AND NEW.create_dt < DATE '2020-04-01') THEN
5                 INSERT INTO games_2020Q1 VALUES (NEW.*);
6         ELSIF (NEW.create_dt >= DATE '2020-04-01' AND NEW.create_dt < DATE '2020-07-01') THEN
7                 INSERT INTO games_2020Q2 VALUES (NEW.*);
8         ELSIF (NEW.create_dt >= DATE '2020-07-01' AND NEW.create_dt < DATE '2020-10-01') THEN
9                 INSERT INTO games_2020Q3 VALUES (NEW.*);
10         ELSIF (NEW.create_dt >= DATE '2020-10-01' AND NEW.create_dt < DATE '2021-01-01') THEN
11                 INSERT INTO games_2020Q4 VALUES (NEW.*);
12     ELSIF (NEW.create_dt >= DATE '2021-01-01' AND NEW.create_dt < DATE '2021-04-01') THEN
13                 INSERT INTO games_2021Q1 VALUES (NEW.*);
14         ELSIF (NEW.create_dt >= DATE '2021-04-01' AND NEW.create_dt < DATE '2021-07-01') THEN
15                 INSERT INTO games_2021Q2 VALUES (NEW.*);
16         ELSIF (NEW.create_dt >= DATE '2021-07-01' AND NEW.create_dt < DATE '2021-10-01') THEN
17                 INSERT INTO games_2021Q3 VALUES (NEW.*);
18         ELSIF (NEW.create_dt >= DATE '2021-10-01' AND NEW.create_dt < DATE '2022-01-01') THEN
19                 INSERT INTO games_2021Q4 VALUES (NEW.*);
20         ELSIF (NEW.create_dt >= DATE '2022-01-01' AND NEW.create_dt < DATE '2022-04-01') THEN
21                 INSERT INTO games_2022Q1 VALUES (NEW.*);
22         ELSIF (NEW.create_dt >= DATE '2022-04-01' AND NEW.create_dt < DATE '2022-07-01') THEN
23                 INSERT INTO games_2022Q2 VALUES (NEW.*);
24         ELSIF (NEW.create_dt >= DATE '2022-07-01' AND NEW.create_dt < DATE '2022-10-01') THEN
25                 INSERT INTO games_2022Q3 VALUES (NEW.*);
26         ELSIF (NEW.create_dt >= DATE '2022-10-01' AND NEW.create_dt < DATE '2023-01-01') THEN
27                 INSERT INTO games_2022Q4 VALUES (NEW.*);
28         ELSIF (NEW.create_dt >= DATE '2023-01-01' AND NEW.create_dt < DATE '2023-04-01') THEN
29                 INSERT INTO games_2023Q1 VALUES (NEW.*);
30         ELSIF (NEW.create_dt >= DATE '2023-04-01' AND NEW.create_dt < DATE '2023-07-01') THEN
31                 INSERT INTO games_2023Q2 VALUES (NEW.*);
32         ELSIF (NEW.create_dt >= DATE '2023-07-01' AND NEW.create_dt < DATE '2023-10-01') THEN
33                 INSERT INTO games_2023Q3 VALUES (NEW.*);
34         ELSIF (NEW.create_dt >= DATE '2023-10-01' AND NEW.create_dt < DATE '2024-01-01') THEN
35                 INSERT INTO games_2023Q4 VALUES (NEW.*);
36         ELSIF (NEW.create_dt >= DATE '2024-01-01' AND NEW.create_dt < DATE '2024-04-01') THEN
37                 INSERT INTO games_2024Q1 VALUES (NEW.*);
38         ELSIF (NEW.create_dt >= DATE '2024-04-01' AND NEW.create_dt < DATE '2024-07-01') THEN
39                 INSERT INTO games_2024Q2 VALUES (NEW.*);
40         ELSIF (NEW.create_dt >= DATE '2024-07-01' AND NEW.create_dt < DATE '2024-10-01') THEN
41                 INSERT INTO games_2024Q3 VALUES (NEW.*);
42         ELSIF (NEW.create_dt >= DATE '2024-10-01' AND NEW.create_dt < DATE '2025-01-01') THEN
43                 INSERT INTO games_2024Q4 VALUES (NEW.*);
44         ELSIF (NEW.create_dt >= DATE '2025-01-01' AND NEW.create_dt < DATE '2025-04-01') THEN
45                 INSERT INTO games_2025Q1 VALUES (NEW.*);
46         ELSIF (NEW.create_dt >= DATE '2025-04-01' AND NEW.create_dt < DATE '2025-07-01') THEN
47                 INSERT INTO games_2025Q2 VALUES (NEW.*);
48         ELSIF (NEW.create_dt >= DATE '2025-07-01' AND NEW.create_dt < DATE '2025-10-01') THEN
49                 INSERT INTO games_2025Q3 VALUES (NEW.*);
50         ELSIF (NEW.create_dt >= DATE '2025-10-01' AND NEW.create_dt < DATE '2026-01-01') THEN
51                 INSERT INTO games_2025Q4 VALUES (NEW.*);
52         ELSE
53                 RAISE EXCEPTION 'Date out of range. Fix the games_ins() trigger!';
54         END IF;
55         RETURN NULL;
56 END
57 $$
58 LANGUAGE plpgsql;
59
60
61 DROP TRIGGER IF EXISTS games_ins_trg ON xonstat.games;
62 CREATE TRIGGER games_ins_trg
63     BEFORE INSERT on xonstat.games
64     FOR EACH ROW EXECUTE PROCEDURE games_ins();