liquid_feedback_core
diff core.sql @ 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 |
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",