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