diff options
author | Yorhel <git@yorhel.nl> | 2009-08-05 15:41:03 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2009-08-05 15:41:03 +0200 |
commit | e8a58a755ad484a07da3832651cbce18a602bf4d (patch) | |
tree | 17fb71872997df305f55a231e78147ec29356f94 /util | |
parent | 0d88a7d3b931fa5e7d2318c58ff62d95be7653ae (diff) |
Multi::IRC: Reimplemented notifications using PgSQL LISTEN/NOTIFY
Diffstat (limited to 'util')
-rw-r--r-- | util/dump.sql | 19 | ||||
-rw-r--r-- | util/updates/update_2.6.sql | 19 |
2 files changed, 38 insertions, 0 deletions
diff --git a/util/dump.sql b/util/dump.sql index ea5d7e68..bdff5c6b 100644 --- a/util/dump.sql +++ b/util/dump.sql @@ -784,6 +784,25 @@ $$ LANGUAGE plpgsql; CREATE CONSTRAINT TRIGGER vn_relgraph_notify AFTER INSERT OR UPDATE ON vn DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE vn_relgraph_notify(); +-- NOTIFY on insert into changes/posts/tags +CREATE OR REPLACE FUNCTION insert_notify() RETURNS trigger AS $$ +BEGIN + IF TG_TABLE_NAME = 'changes' THEN + NOTIFY newrevision; + ELSIF TG_TABLE_NAME = 'threads_posts' THEN + NOTIFY newpost; + ELSIF TG_TABLE_NAME = 'tags' THEN + NOTIFY newtag; + END IF; + RETURN NULL; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER insert_notify AFTER INSERT ON changes FOR EACH STATEMENT EXECUTE PROCEDURE insert_notify(); +CREATE TRIGGER insert_notify AFTER INSERT ON threads_posts FOR EACH STATEMENT EXECUTE PROCEDURE insert_notify(); +CREATE TRIGGER insert_notify AFTER INSERT ON tags FOR EACH STATEMENT EXECUTE PROCEDURE insert_notify(); + + diff --git a/util/updates/update_2.6.sql b/util/updates/update_2.6.sql index f0ddff65..a5ae03f6 100644 --- a/util/updates/update_2.6.sql +++ b/util/updates/update_2.6.sql @@ -240,3 +240,22 @@ $$ LANGUAGE plpgsql; CREATE CONSTRAINT TRIGGER vn_relgraph_notify AFTER INSERT OR UPDATE ON vn DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE vn_relgraph_notify(); + +-- NOTIFY on insert into changes/posts/tags +CREATE OR REPLACE FUNCTION insert_notify() RETURNS trigger AS $$ +BEGIN + IF TG_TABLE_NAME = 'changes' THEN + NOTIFY newrevision; + ELSIF TG_TABLE_NAME = 'threads_posts' THEN + NOTIFY newpost; + ELSIF TG_TABLE_NAME = 'tags' THEN + NOTIFY newtag; + END IF; + RETURN NULL; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER insert_notify AFTER INSERT ON changes FOR EACH STATEMENT EXECUTE PROCEDURE insert_notify(); +CREATE TRIGGER insert_notify AFTER INSERT ON threads_posts FOR EACH STATEMENT EXECUTE PROCEDURE insert_notify(); +CREATE TRIGGER insert_notify AFTER INSERT ON tags FOR EACH STATEMENT EXECUTE PROCEDURE insert_notify(); + |