]> de.git.xonotic.org Git - xonotic/xonstatdb.git/blob - triggers/player_weapon_stats_ins_trg.sql
Partition tables out to 2020, remove old ones.
[xonotic/xonstatdb.git] / triggers / player_weapon_stats_ins_trg.sql
1 CREATE OR REPLACE FUNCTION player_weapon_stats_ins()
2 RETURNS TRIGGER AS $$
3 BEGIN
4         IF (NEW.create_dt >= DATE '2014-01-01' AND NEW.create_dt < DATE '2014-04-01') THEN
5                 INSERT INTO player_weapon_stats_2014Q1 VALUES (NEW.*);
6         ELSIF (NEW.create_dt >= DATE '2014-04-01' AND NEW.create_dt < DATE '2014-07-01') THEN
7                 INSERT INTO player_weapon_stats_2014Q2 VALUES (NEW.*);
8         ELSIF (NEW.create_dt >= DATE '2014-07-01' AND NEW.create_dt < DATE '2014-10-01') THEN
9                 INSERT INTO player_weapon_stats_2014Q3 VALUES (NEW.*);
10         ELSIF (NEW.create_dt >= DATE '2014-10-01' AND NEW.create_dt < DATE '2015-01-01') THEN
11                 INSERT INTO player_weapon_stats_2014Q4 VALUES (NEW.*);
12         ELSIF (NEW.create_dt >= DATE '2015-01-01' AND NEW.create_dt < DATE '2015-04-01') THEN
13                 INSERT INTO player_weapon_stats_2015Q1 VALUES (NEW.*);
14         ELSIF (NEW.create_dt >= DATE '2015-04-01' AND NEW.create_dt < DATE '2015-07-01') THEN
15                 INSERT INTO player_weapon_stats_2015Q2 VALUES (NEW.*);
16         ELSIF (NEW.create_dt >= DATE '2015-07-01' AND NEW.create_dt < DATE '2015-10-01') THEN
17                 INSERT INTO player_weapon_stats_2015Q3 VALUES (NEW.*);
18         ELSIF (NEW.create_dt >= DATE '2015-10-01' AND NEW.create_dt < DATE '2016-01-01') THEN
19                 INSERT INTO player_weapon_stats_2015Q4 VALUES (NEW.*);
20         ELSIF (NEW.create_dt >= DATE '2016-01-01' AND NEW.create_dt < DATE '2016-04-01') THEN
21                 INSERT INTO player_weapon_stats_2016Q1 VALUES (NEW.*);
22         ELSIF (NEW.create_dt >= DATE '2016-04-01' AND NEW.create_dt < DATE '2016-07-01') THEN
23                 INSERT INTO player_weapon_stats_2016Q2 VALUES (NEW.*);
24         ELSIF (NEW.create_dt >= DATE '2016-07-01' AND NEW.create_dt < DATE '2016-10-01') THEN
25                 INSERT INTO player_weapon_stats_2016Q3 VALUES (NEW.*);
26         ELSIF (NEW.create_dt >= DATE '2016-10-01' AND NEW.create_dt < DATE '2017-01-01') THEN
27                 INSERT INTO player_weapon_stats_2016Q4 VALUES (NEW.*);
28         ELSIF (NEW.create_dt >= DATE '2017-01-01' AND NEW.create_dt < DATE '2017-04-01') THEN
29                 INSERT INTO player_weapon_stats_2017Q1 VALUES (NEW.*);
30         ELSIF (NEW.create_dt >= DATE '2017-04-01' AND NEW.create_dt < DATE '2017-07-01') THEN
31                 INSERT INTO player_weapon_stats_2017Q2 VALUES (NEW.*);
32         ELSIF (NEW.create_dt >= DATE '2017-07-01' AND NEW.create_dt < DATE '2017-10-01') THEN
33                 INSERT INTO player_weapon_stats_2017Q3 VALUES (NEW.*);
34         ELSIF (NEW.create_dt >= DATE '2017-10-01' AND NEW.create_dt < DATE '2018-01-01') THEN
35                 INSERT INTO player_weapon_stats_2017Q4 VALUES (NEW.*);
36         ELSIF (NEW.create_dt >= DATE '2018-01-01' AND NEW.create_dt < DATE '2018-04-01') THEN
37                 INSERT INTO player_weapon_stats_2018Q1 VALUES (NEW.*);
38         ELSIF (NEW.create_dt >= DATE '2018-04-01' AND NEW.create_dt < DATE '2018-07-01') THEN
39                 INSERT INTO player_weapon_stats_2018Q2 VALUES (NEW.*);
40         ELSIF (NEW.create_dt >= DATE '2018-07-01' AND NEW.create_dt < DATE '2018-10-01') THEN
41                 INSERT INTO player_weapon_stats_2018Q3 VALUES (NEW.*);
42         ELSIF (NEW.create_dt >= DATE '2018-10-01' AND NEW.create_dt < DATE '2019-01-01') THEN
43                 INSERT INTO player_weapon_stats_2018Q4 VALUES (NEW.*);
44         ELSIF (NEW.create_dt >= DATE '2019-01-01' AND NEW.create_dt < DATE '2019-04-01') THEN
45                 INSERT INTO player_weapon_stats_2019Q1 VALUES (NEW.*);
46         ELSIF (NEW.create_dt >= DATE '2019-04-01' AND NEW.create_dt < DATE '2019-07-01') THEN
47                 INSERT INTO player_weapon_stats_2019Q2 VALUES (NEW.*);
48         ELSIF (NEW.create_dt >= DATE '2019-07-01' AND NEW.create_dt < DATE '2019-10-01') THEN
49                 INSERT INTO player_weapon_stats_2019Q3 VALUES (NEW.*);
50         ELSIF (NEW.create_dt >= DATE '2019-10-01' AND NEW.create_dt < DATE '2020-01-01') THEN
51                 INSERT INTO player_weapon_stats_2019Q4 VALUES (NEW.*);
52         ELSIF (NEW.create_dt >= DATE '2020-01-01' AND NEW.create_dt < DATE '2020-04-01') THEN
53                 INSERT INTO player_weapon_stats_2020Q1 VALUES (NEW.*);
54         ELSIF (NEW.create_dt >= DATE '2020-04-01' AND NEW.create_dt < DATE '2020-07-01') THEN
55                 INSERT INTO player_weapon_stats_2020Q2 VALUES (NEW.*);
56         ELSIF (NEW.create_dt >= DATE '2020-07-01' AND NEW.create_dt < DATE '2020-10-01') THEN
57                 INSERT INTO player_weapon_stats_2020Q3 VALUES (NEW.*);
58         ELSIF (NEW.create_dt >= DATE '2020-10-01' AND NEW.create_dt < DATE '2021-01-01') THEN
59                 INSERT INTO player_weapon_stats_2020Q4 VALUES (NEW.*);
60         ELSE
61                 RAISE EXCEPTION 'Date out of range. Fix the player_weapon_stats_ins() trigger!';
62         END IF;
63         RETURN NULL;
64 END
65 $$
66 LANGUAGE plpgsql;
67
68 DROP TRIGGER IF EXISTS player_weapon_stats_ins_trg ON xonstat.player_weapon_stats;
69 CREATE TRIGGER player_weapon_stats_ins_trg
70     BEFORE INSERT on xonstat.player_weapon_stats
71     FOR EACH ROW EXECUTE PROCEDURE player_weapon_stats_ins();