liquid_feedback_core
changeset 563:fc09088587b2
Bugfix regarding locking when logging initiative revocation (cannot combine DISTINCT with FOR SHARE)
author | jbe |
---|---|
date | Mon Sep 25 14:44:35 2017 +0200 (2017-09-25) |
parents | c3931054bb55 |
children | dc48b79b8a7e 17c9cca2938b |
files | core.sql update/core-update.v3.2.2-v4.0.0.sql |
line diff
1.1 --- a/core.sql Mon Sep 25 14:30:02 2017 +0200 1.2 +++ b/core.sql Mon Sep 25 14:44:35 2017 +0200 1.3 @@ -1945,12 +1945,16 @@ 1.4 "draft_id_v" "draft"."id"%TYPE; 1.5 BEGIN 1.6 IF OLD."revoked" ISNULL AND NEW."revoked" NOTNULL THEN 1.7 + -- NOTE: lock for primary key update to avoid new drafts 1.8 + SELECT NULL FROM "initiative" WHERE "id" = NEW."id" FOR UPDATE; 1.9 SELECT * INTO "issue_row" FROM "issue" 1.10 WHERE "id" = NEW."issue_id" FOR SHARE; 1.11 SELECT * INTO "area_row" FROM "area" 1.12 WHERE "id" = "issue_row"."area_id" FOR SHARE; 1.13 + -- NOTE: FOR SHARE cannot be used with DISTINCT in view "current_draft" 1.14 + SELECT NULL FROM "draft" WHERE "initiative_id" = NEW."id" FOR SHARE; 1.15 SELECT "id" INTO "draft_id_v" FROM "current_draft" 1.16 - WHERE "initiative_id" = NEW."id" FOR SHARE; 1.17 + WHERE "initiative_id" = NEW."id"; 1.18 INSERT INTO "event" ( 1.19 "event", "member_id", 1.20 "unit_id", "area_id", "policy_id", "issue_id", "state",
2.1 --- a/update/core-update.v3.2.2-v4.0.0.sql Mon Sep 25 14:30:02 2017 +0200 2.2 +++ b/update/core-update.v3.2.2-v4.0.0.sql Mon Sep 25 14:44:35 2017 +0200 2.3 @@ -1200,12 +1200,16 @@ 2.4 "draft_id_v" "draft"."id"%TYPE; 2.5 BEGIN 2.6 IF OLD."revoked" ISNULL AND NEW."revoked" NOTNULL THEN 2.7 + -- NOTE: lock for primary key update to avoid new drafts 2.8 + SELECT NULL FROM "initiative" WHERE "id" = NEW."id" FOR UPDATE; 2.9 SELECT * INTO "issue_row" FROM "issue" 2.10 WHERE "id" = NEW."issue_id" FOR SHARE; 2.11 SELECT * INTO "area_row" FROM "area" 2.12 WHERE "id" = "issue_row"."area_id" FOR SHARE; 2.13 + -- NOTE: FOR SHARE cannot be used with DISTINCT in view "current_draft" 2.14 + SELECT NULL FROM "draft" WHERE "initiative_id" = NEW."id" FOR SHARE; 2.15 SELECT "id" INTO "draft_id_v" FROM "current_draft" 2.16 - WHERE "initiative_id" = NEW."id" FOR SHARE; 2.17 + WHERE "initiative_id" = NEW."id"; 2.18 INSERT INTO "event" ( 2.19 "event", "member_id", 2.20 "unit_id", "area_id", "policy_id", "issue_id", "state",