]> de.git.xonotic.org Git - xonotic/xonstatdb.git/blobdiff - triggers/player_game_stats_ins_trg.sql
Add triggers for partitioning functionality.
[xonotic/xonstatdb.git] / triggers / player_game_stats_ins_trg.sql
diff --git a/triggers/player_game_stats_ins_trg.sql b/triggers/player_game_stats_ins_trg.sql
new file mode 100755 (executable)
index 0000000..8c818f9
--- /dev/null
@@ -0,0 +1,28 @@
+CREATE OR REPLACE FUNCTION player_game_stats_ins()\r
+RETURNS TRIGGER AS $$\r
+BEGIN\r
+    IF (create_dt >= DATE '2011-04-01' AND create_dt < DATE '2011-07-01') THEN\r
+        INSERT INTO player_game_stats_2011Q2 VALUES (NEW.*);\r
+    ELSIF (create_dt >= DATE '2011-07-01' AND create_dt < DATE '2011-10-01') THEN\r
+        INSERT INTO player_game_stats_2011Q3 VALUES (NEW.*);\r
+    ELSIF (create_dt >= DATE '2011-10-01' AND create_dt < DATE '2012-01-01') THEN\r
+        INSERT INTO player_game_stats_2011Q4 VALUES (NEW.*);\r
+    ELSIF (create_dt >= DATE '2012-01-01' AND create_dt < DATE '2012-04-01') THEN\r
+        INSERT INTO player_game_stats_2012Q1 VALUES (NEW.*);\r
+    ELSIF (create_dt >= DATE '2012-04-01' AND create_dt < DATE '2012-07-01') THEN\r
+        INSERT INTO player_game_stats_2012Q2 VALUES (NEW.*);\r
+    ELSIF (create_dt >= DATE '2012-07-01' AND create_dt < DATE '2012-10-01') THEN\r
+        INSERT INTO player_game_stats_2012Q3 VALUES (NEW.*);\r
+    ELSIF (create_dt >= DATE '2012-10-01' AND create_dt < DATE '2013-01-01') THEN\r
+        INSERT INTO player_game_stats_2012Q4 VALUES (NEW.*);\r
+    ELSIF (create_dt >= DATE '2013-01-01' AND create_dt < DATE '2013-04-01') THEN\r
+        INSERT INTO player_game_stats_2013Q1 VALUES (NEW.*);\r
+    ELSIF (create_dt >= DATE '2013-04-01' AND create_dt < DATE '2013-07-01') THEN\r
+        INSERT INTO player_game_stats_2013Q2 VALUES (NEW.*);\r
+    ELSE\r
+        RAISE EXCEPTION 'Date out of range.  Fix the player_game_stats_ins() trigger!';\r
+    END IF;\r
+    RETURN NULL;\r
+END;\r
+$$\r
+LANGUAGE plpgsql;\r