]> de.git.xonotic.org Git - xonotic/xonstatdb.git/blob - triggers/player_game_stats_ins_trg.sql
Partition player game stats through 2014.
[xonotic/xonstatdb.git] / triggers / player_game_stats_ins_trg.sql
1 CREATE OR REPLACE FUNCTION player_game_stats_ins()
2 RETURNS TRIGGER AS $$
3 BEGIN
4     -- 2013
5     IF (NEW.create_dt >= DATE '2013-01-01' AND NEW.create_dt < DATE '2013-04-01') THEN
6         INSERT INTO player_game_stats_2013Q1 VALUES (NEW.*);
7     ELSIF (NEW.create_dt >= DATE '2013-04-01' AND NEW.create_dt < DATE '2013-07-01') THEN
8         INSERT INTO player_game_stats_2013Q2 VALUES (NEW.*);
9     ELSIF (NEW.create_dt >= DATE '2013-07-01' AND NEW.create_dt < DATE '2013-10-01') THEN
10         INSERT INTO player_game_stats_2013Q3 VALUES (NEW.*);
11     ELSIF (NEW.create_dt >= DATE '2013-10-01' AND NEW.create_dt < DATE '2014-01-01') THEN
12         INSERT INTO player_game_stats_2013Q4 VALUES (NEW.*);
13
14     -- 2014
15     ELSIF (NEW.create_dt >= DATE '2014-01-01' AND NEW.create_dt < DATE '2014-04-01') THEN
16         INSERT INTO player_game_stats_2014Q1 VALUES (NEW.*);
17     ELSIF (NEW.create_dt >= DATE '2014-04-01' AND NEW.create_dt < DATE '2014-07-01') THEN
18         INSERT INTO player_game_stats_2014Q2 VALUES (NEW.*);
19     ELSIF (NEW.create_dt >= DATE '2014-07-01' AND NEW.create_dt < DATE '2014-10-01') THEN
20         INSERT INTO player_game_stats_2014Q3 VALUES (NEW.*);
21     ELSIF (NEW.create_dt >= DATE '2014-10-01' AND NEW.create_dt < DATE '2015-01-01') THEN
22         INSERT INTO player_game_stats_2014Q4 VALUES (NEW.*);
23
24     ELSE
25         RAISE EXCEPTION 'Date out of range.  Fix the player_game_stats_ins() trigger!';
26     END IF;
27     RETURN NULL;
28 END;
29 $$
30 LANGUAGE plpgsql;
31
32 DROP TRIGGER IF EXISTS player_game_stats_ins_trg ON xonstat.player_game_stats;
33 CREATE TRIGGER player_game_stats_ins_trg
34     BEFORE INSERT on xonstat.player_game_stats
35     FOR EACH ROW EXECUTE PROCEDURE player_game_stats_ins();