liquid_feedback_core
annotate update/core-update.v1.2.0-v1.2.1.sql @ 96:07e6a4f11b5b
Removed unneccessary JOIN in "create_interest_snapshot"(...)
The INSERT INTO "direct_supporter_snapshot" in function "create_interest_snapshot"(...) does not need to check if members are active.
The previous step ensures that the joined table "direct_interest_snapshot" does not contain entries from disabled members.
The INSERT INTO "direct_supporter_snapshot" in function "create_interest_snapshot"(...) does not need to check if members are active.
The previous step ensures that the joined table "direct_interest_snapshot" does not contain entries from disabled members.
author | jbe |
---|---|
date | Mon Dec 06 23:50:32 2010 +0100 (2010-12-06) |
parents | fdd1729d7e2a |
children |
rev | line source |
---|---|
jbe@59 | 1 BEGIN; |
jbe@59 | 2 |
jbe@59 | 3 CREATE OR REPLACE VIEW "liquid_feedback_version" AS |
jbe@59 | 4 SELECT * FROM (VALUES ('1.2.1', 1, 2, 1)) |
jbe@59 | 5 AS "subquery"("string", "major", "minor", "revision"); |
jbe@59 | 6 |
jbe@59 | 7 ALTER TABLE "issue" ADD COLUMN "cleaned" TIMESTAMPTZ; |
jbe@59 | 8 ALTER TABLE "issue" ADD CONSTRAINT "clean_restriction" |
jbe@59 | 9 CHECK ( |
jbe@59 | 10 "cleaned" ISNULL OR ( |
jbe@59 | 11 "closed" NOTNULL AND ( |
jbe@59 | 12 "fully_frozen" ISNULL OR "ranks_available" |
jbe@59 | 13 ) |
jbe@59 | 14 ) |
jbe@59 | 15 ); |
jbe@59 | 16 |
jbe@59 | 17 COMMENT ON COLUMN "issue"."cleaned" IS 'Point in time, when discussion data and votes had been deleted'; |
jbe@59 | 18 |
jbe@59 | 19 CREATE FUNCTION "clean_issue"("issue_id_p" "issue"."id"%TYPE) |
jbe@59 | 20 RETURNS VOID |
jbe@59 | 21 LANGUAGE 'plpgsql' VOLATILE AS $$ |
jbe@59 | 22 DECLARE |
jbe@59 | 23 "issue_row" "issue"%ROWTYPE; |
jbe@59 | 24 BEGIN |
jbe@59 | 25 SELECT * INTO "issue_row" |
jbe@59 | 26 FROM "issue" WHERE "id" = "issue_id_p" |
jbe@59 | 27 FOR UPDATE; |
jbe@59 | 28 IF "issue_row"."cleaned" ISNULL THEN |
jbe@59 | 29 UPDATE "issue" SET |
jbe@59 | 30 "closed" = NULL, |
jbe@59 | 31 "ranks_available" = FALSE |
jbe@59 | 32 WHERE "id" = "issue_id_p"; |
jbe@59 | 33 DELETE FROM "delegating_voter" |
jbe@59 | 34 WHERE "issue_id" = "issue_id_p"; |
jbe@59 | 35 DELETE FROM "direct_voter" |
jbe@59 | 36 WHERE "issue_id" = "issue_id_p"; |
jbe@59 | 37 DELETE FROM "delegating_interest_snapshot" |
jbe@59 | 38 WHERE "issue_id" = "issue_id_p"; |
jbe@59 | 39 DELETE FROM "direct_interest_snapshot" |
jbe@59 | 40 WHERE "issue_id" = "issue_id_p"; |
jbe@59 | 41 DELETE FROM "delegating_population_snapshot" |
jbe@59 | 42 WHERE "issue_id" = "issue_id_p"; |
jbe@59 | 43 DELETE FROM "direct_population_snapshot" |
jbe@59 | 44 WHERE "issue_id" = "issue_id_p"; |
jbe@59 | 45 DELETE FROM "delegation" |
jbe@59 | 46 WHERE "issue_id" = "issue_id_p"; |
jbe@59 | 47 DELETE FROM "supporter" |
jbe@59 | 48 WHERE "issue_id" = "issue_id_p"; |
jbe@59 | 49 UPDATE "issue" SET |
jbe@59 | 50 "closed" = "issue_row"."closed", |
jbe@59 | 51 "ranks_available" = "issue_row"."ranks_available", |
jbe@59 | 52 "cleaned" = now() |
jbe@59 | 53 WHERE "id" = "issue_id_p"; |
jbe@59 | 54 END IF; |
jbe@59 | 55 RETURN; |
jbe@59 | 56 END; |
jbe@59 | 57 $$; |
jbe@59 | 58 |
jbe@59 | 59 COMMENT ON FUNCTION "clean_issue"("issue"."id"%TYPE) IS 'Delete discussion data and votes belonging to an issue'; |
jbe@59 | 60 |
jbe@59 | 61 COMMIT; |