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",

Impressum / About Us