liquid_feedback_core

diff core.sql @ 1:23092eb00e16

Version beta2

Serious bugfix in SQL function create_snapshot(...), which caused wrong counting of opinions on suggestions

lf_update now deletes expired sessions

Redundancy in SQL function check_everything() removed by using existent views
author jbe
date Tue Nov 03 12:00:00 2009 +0100 (2009-11-03)
parents 8d021cb5eaf4
children d45919d791ff
line diff
     1.1 --- a/core.sql	Tue Oct 27 12:00:00 2009 +0100
     1.2 +++ b/core.sql	Tue Nov 03 12:00:00 2009 +0100
     1.3 @@ -838,6 +838,16 @@
     1.4  COMMENT ON VIEW "battle" IS 'Number of members preferring one initiative over another';
     1.5  
     1.6  
     1.7 +CREATE VIEW "expired_session" AS
     1.8 +  SELECT * FROM "session" WHERE now() > "expiry";
     1.9 +
    1.10 +CREATE RULE "delete" AS ON DELETE TO "expired_session" DO INSTEAD
    1.11 +  DELETE FROM "session" WHERE "ident" = OLD."ident";
    1.12 +
    1.13 +COMMENT ON VIEW "expired_session" IS 'View containing all expired sessions where DELETE is possible';
    1.14 +COMMENT ON RULE "delete" ON "expired_session" IS 'Rule allowing DELETE on rows in "expired_session" view, i.e. DELETE FROM "expired_session"';
    1.15 +
    1.16 +
    1.17  CREATE VIEW "open_issue" AS
    1.18    SELECT * FROM "issue" WHERE "closed" ISNULL;
    1.19  
    1.20 @@ -1276,7 +1286,7 @@
    1.21                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.22                FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.23                ON "opinion"."member_id" = "snapshot"."member_id"
    1.24 -              WHERE "opinion"."initiative_id" = "initiative_id_v"
    1.25 +              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.26                AND "snapshot"."issue_id" = "issue_id_p"
    1.27                AND "opinion"."degree" = -2
    1.28                AND "opinion"."fulfilled" = FALSE
    1.29 @@ -1285,7 +1295,7 @@
    1.30                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.31                FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.32                ON "opinion"."member_id" = "snapshot"."member_id"
    1.33 -              WHERE "opinion"."initiative_id" = "initiative_id_v"
    1.34 +              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.35                AND "snapshot"."issue_id" = "issue_id_p"
    1.36                AND "opinion"."degree" = -2
    1.37                AND "opinion"."fulfilled" = TRUE
    1.38 @@ -1294,7 +1304,7 @@
    1.39                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.40                FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.41                ON "opinion"."member_id" = "snapshot"."member_id"
    1.42 -              WHERE "opinion"."initiative_id" = "initiative_id_v"
    1.43 +              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.44                AND "snapshot"."issue_id" = "issue_id_p"
    1.45                AND "opinion"."degree" = -1
    1.46                AND "opinion"."fulfilled" = FALSE
    1.47 @@ -1303,7 +1313,7 @@
    1.48                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.49                FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.50                ON "opinion"."member_id" = "snapshot"."member_id"
    1.51 -              WHERE "opinion"."initiative_id" = "initiative_id_v"
    1.52 +              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.53                AND "snapshot"."issue_id" = "issue_id_p"
    1.54                AND "opinion"."degree" = -1
    1.55                AND "opinion"."fulfilled" = TRUE
    1.56 @@ -1312,7 +1322,7 @@
    1.57                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.58                FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.59                ON "opinion"."member_id" = "snapshot"."member_id"
    1.60 -              WHERE "opinion"."initiative_id" = "initiative_id_v"
    1.61 +              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.62                AND "snapshot"."issue_id" = "issue_id_p"
    1.63                AND "opinion"."degree" = 1
    1.64                AND "opinion"."fulfilled" = FALSE
    1.65 @@ -1321,7 +1331,7 @@
    1.66                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.67                FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.68                ON "opinion"."member_id" = "snapshot"."member_id"
    1.69 -              WHERE "opinion"."initiative_id" = "initiative_id_v"
    1.70 +              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.71                AND "snapshot"."issue_id" = "issue_id_p"
    1.72                AND "opinion"."degree" = 1
    1.73                AND "opinion"."fulfilled" = TRUE
    1.74 @@ -1330,7 +1340,7 @@
    1.75                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.76                FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.77                ON "opinion"."member_id" = "snapshot"."member_id"
    1.78 -              WHERE "opinion"."initiative_id" = "initiative_id_v"
    1.79 +              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.80                AND "snapshot"."issue_id" = "issue_id_p"
    1.81                AND "opinion"."degree" = 2
    1.82                AND "opinion"."fulfilled" = FALSE
    1.83 @@ -1339,7 +1349,7 @@
    1.84                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.85                FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.86                ON "opinion"."member_id" = "snapshot"."member_id"
    1.87 -              WHERE "opinion"."initiative_id" = "initiative_id_v"
    1.88 +              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.89                AND "snapshot"."issue_id" = "issue_id_p"
    1.90                AND "opinion"."degree" = 2
    1.91                AND "opinion"."fulfilled" = TRUE
    1.92 @@ -1962,16 +1972,14 @@
    1.93      DECLARE
    1.94        "issue_id_v" "issue"."id"%TYPE;
    1.95      BEGIN
    1.96 +      DELETE FROM "expired_session";
    1.97        FOR "issue_id_v" IN
    1.98 -        SELECT "id" FROM "issue" WHERE "closed" ISNULL
    1.99 +        SELECT "id" FROM "open_issue"
   1.100        LOOP
   1.101          PERFORM "check_issue"("issue_id_v");
   1.102        END LOOP;
   1.103        FOR "issue_id_v" IN
   1.104 -        SELECT "id" FROM "issue"
   1.105 -        WHERE "frozen" NOTNULL
   1.106 -        AND "closed" NOTNULL
   1.107 -        AND "ranks_available" = FALSE FOR UPDATE
   1.108 +        SELECT "id" FROM "issue_with_ranks_missing"
   1.109        LOOP
   1.110          PERFORM "calculate_ranks"("issue_id_v");
   1.111        END LOOP;

Impressum / About Us