# HG changeset patch # User jbe # Date 1345395862 -7200 # Node ID 4f935e989ff6db69b0bc9471747a531a5316b8c8 # Parent a00b58b7a510af3573b9fb6123d4713da87bb941 "non_voter" deletes "direct_voter" and vice versa diff -r a00b58b7a510 -r 4f935e989ff6 core.sql --- a/core.sql Sun Aug 19 18:31:57 2012 +0200 +++ b/core.sql Sun Aug 19 19:04:22 2012 +0200 @@ -1510,6 +1510,44 @@ COMMENT ON TRIGGER "last_opinion_deletes_suggestion" ON "opinion" IS 'Removing the last opinion of a suggestion deletes the suggestion'; +CREATE FUNCTION "non_voter_deletes_direct_voter_trigger"() + RETURNS TRIGGER + LANGUAGE 'plpgsql' VOLATILE AS $$ + BEGIN + DELETE FROM "direct_voter" + WHERE "issue_id" = NEW."issue_id" AND "member_id" = NEW."member_id"; + RETURN NULL; + END; + $$; + +CREATE TRIGGER "non_voter_deletes_direct_voter" + AFTER INSERT OR UPDATE ON "non_voter" + FOR EACH ROW EXECUTE PROCEDURE + "non_voter_deletes_direct_voter_trigger"(); + +COMMENT ON FUNCTION "non_voter_deletes_direct_voter_trigger"() IS 'Implementation of trigger "non_voter_deletes_direct_voter" on table "non_voter"'; +COMMENT ON TRIGGER "non_voter_deletes_direct_voter" ON "non_voter" IS 'An entry in the "non_voter" table deletes an entry in the "direct_voter" table (and vice versa due to trigger "direct_voter_deletes_non_voter" on table "direct_voter")'; + + +CREATE FUNCTION "direct_voter_deletes_non_voter_trigger"() + RETURNS TRIGGER + LANGUAGE 'plpgsql' VOLATILE AS $$ + BEGIN + DELETE FROM "non_voter" + WHERE "issue_id" = NEW."issue_id" AND "member_id" = NEW."member_id"; + RETURN NULL; + END; + $$; + +CREATE TRIGGER "direct_voter_deletes_non_voter" + AFTER INSERT OR UPDATE ON "direct_voter" + FOR EACH ROW EXECUTE PROCEDURE + "direct_voter_deletes_non_voter_trigger"(); + +COMMENT ON FUNCTION "direct_voter_deletes_non_voter_trigger"() IS 'Implementation of trigger "direct_voter_deletes_non_voter" on table "direct_voter"'; +COMMENT ON TRIGGER "direct_voter_deletes_non_voter" ON "direct_voter" IS 'An entry in the "direct_voter" table deletes an entry in the "non_voter" table (and vice versa due to trigger "non_voter_deletes_direct_voter" on table "non_voter")'; + + --------------------------------------------------------------- -- Ensure that votes are not modified when issues are frozen -- diff -r a00b58b7a510 -r 4f935e989ff6 update/core-update.v2.0.11-v2.1.0.sql --- a/update/core-update.v2.0.11-v2.1.0.sql Sun Aug 19 18:31:57 2012 +0200 +++ b/update/core-update.v2.0.11-v2.1.0.sql Sun Aug 19 19:04:22 2012 +0200 @@ -37,6 +37,42 @@ DROP TABLE "rendered_issue_comment"; DROP TABLE "issue_comment"; +CREATE FUNCTION "non_voter_deletes_direct_voter_trigger"() + RETURNS TRIGGER + LANGUAGE 'plpgsql' VOLATILE AS $$ + BEGIN + DELETE FROM "direct_voter" + WHERE "issue_id" = NEW."issue_id" AND "member_id" = NEW."member_id"; + RETURN NULL; + END; + $$; + +CREATE TRIGGER "non_voter_deletes_direct_voter" + AFTER INSERT OR UPDATE ON "non_voter" + FOR EACH ROW EXECUTE PROCEDURE + "non_voter_deletes_direct_voter_trigger"(); + +COMMENT ON FUNCTION "non_voter_deletes_direct_voter_trigger"() IS 'Implementation of trigger "non_voter_deletes_direct_voter" on table "non_voter"'; +COMMENT ON TRIGGER "non_voter_deletes_direct_voter" ON "non_voter" IS 'An entry in the "non_voter" table deletes an entry in the "direct_voter" table (and vice versa due to trigger "direct_voter_deletes_non_voter" on table "direct_voter")'; + +CREATE FUNCTION "direct_voter_deletes_non_voter_trigger"() + RETURNS TRIGGER + LANGUAGE 'plpgsql' VOLATILE AS $$ + BEGIN + DELETE FROM "non_voter" + WHERE "issue_id" = NEW."issue_id" AND "member_id" = NEW."member_id"; + RETURN NULL; + END; + $$; + +CREATE TRIGGER "direct_voter_deletes_non_voter" + AFTER INSERT OR UPDATE ON "direct_voter" + FOR EACH ROW EXECUTE PROCEDURE + "direct_voter_deletes_non_voter_trigger"(); + +COMMENT ON FUNCTION "direct_voter_deletes_non_voter_trigger"() IS 'Implementation of trigger "direct_voter_deletes_non_voter" on table "direct_voter"'; +COMMENT ON TRIGGER "direct_voter_deletes_non_voter" ON "direct_voter" IS 'An entry in the "direct_voter" table deletes an entry in the "non_voter" table (and vice versa due to trigger "non_voter_deletes_direct_voter" on table "non_voter")'; + CREATE OR REPLACE FUNCTION "freeze_after_snapshot" ( "issue_id_p" "issue"."id"%TYPE ) RETURNS VOID