liquid_feedback_core

diff core.sql @ 36:c3b72b644cc8

Critical bugfix in function "create_snapshot": Fixed incorrect calculation of opinion count for suggestions
author jbe
date Thu Mar 04 00:42:47 2010 +0100 (2010-03-04)
parents 9970f73c1140
children c78ab22c4870
line diff
     1.1 --- a/core.sql	Sun Feb 21 16:53:05 2010 +0100
     1.2 +++ b/core.sql	Thu Mar 04 00:42:47 2010 +0100
     1.3 @@ -6,7 +6,7 @@
     1.4  BEGIN;
     1.5  
     1.6  CREATE VIEW "liquid_feedback_version" AS
     1.7 -  SELECT * FROM (VALUES ('beta22', NULL, NULL, NULL))
     1.8 +  SELECT * FROM (VALUES ('beta23', NULL, NULL, NULL))
     1.9    AS "subquery"("string", "major", "minor", "revision");
    1.10  
    1.11  
    1.12 @@ -2329,73 +2329,97 @@
    1.13            UPDATE "suggestion" SET
    1.14              "minus2_unfulfilled_count" = (
    1.15                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.16 -              FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.17 -              ON "opinion"."member_id" = "snapshot"."member_id"
    1.18 -              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.19 -              AND "snapshot"."issue_id" = "issue_id_p"
    1.20 +              FROM "issue" CROSS JOIN "opinion"
    1.21 +              JOIN "direct_interest_snapshot" AS "snapshot"
    1.22 +              ON "snapshot"."issue_id" = "issue"."id"
    1.23 +              AND "snapshot"."event" = "issue"."latest_snapshot_event"
    1.24 +              AND "snapshot"."member_id" = "opinion"."member_id"
    1.25 +              WHERE "issue"."id" = "issue_id_p"
    1.26 +              AND "opinion"."suggestion_id" = "suggestion_id_v"
    1.27                AND "opinion"."degree" = -2
    1.28                AND "opinion"."fulfilled" = FALSE
    1.29              ),
    1.30              "minus2_fulfilled_count" = (
    1.31                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.32 -              FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.33 -              ON "opinion"."member_id" = "snapshot"."member_id"
    1.34 -              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.35 -              AND "snapshot"."issue_id" = "issue_id_p"
    1.36 +              FROM "issue" CROSS JOIN "opinion"
    1.37 +              JOIN "direct_interest_snapshot" AS "snapshot"
    1.38 +              ON "snapshot"."issue_id" = "issue"."id"
    1.39 +              AND "snapshot"."event" = "issue"."latest_snapshot_event"
    1.40 +              AND "snapshot"."member_id" = "opinion"."member_id"
    1.41 +              WHERE "issue"."id" = "issue_id_p"
    1.42 +              AND "opinion"."suggestion_id" = "suggestion_id_v"
    1.43                AND "opinion"."degree" = -2
    1.44                AND "opinion"."fulfilled" = TRUE
    1.45              ),
    1.46              "minus1_unfulfilled_count" = (
    1.47                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.48 -              FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.49 -              ON "opinion"."member_id" = "snapshot"."member_id"
    1.50 -              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.51 -              AND "snapshot"."issue_id" = "issue_id_p"
    1.52 +              FROM "issue" CROSS JOIN "opinion"
    1.53 +              JOIN "direct_interest_snapshot" AS "snapshot"
    1.54 +              ON "snapshot"."issue_id" = "issue"."id"
    1.55 +              AND "snapshot"."event" = "issue"."latest_snapshot_event"
    1.56 +              AND "snapshot"."member_id" = "opinion"."member_id"
    1.57 +              WHERE "issue"."id" = "issue_id_p"
    1.58 +              AND "opinion"."suggestion_id" = "suggestion_id_v"
    1.59                AND "opinion"."degree" = -1
    1.60                AND "opinion"."fulfilled" = FALSE
    1.61              ),
    1.62              "minus1_fulfilled_count" = (
    1.63                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.64 -              FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.65 -              ON "opinion"."member_id" = "snapshot"."member_id"
    1.66 -              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.67 -              AND "snapshot"."issue_id" = "issue_id_p"
    1.68 +              FROM "issue" CROSS JOIN "opinion"
    1.69 +              JOIN "direct_interest_snapshot" AS "snapshot"
    1.70 +              ON "snapshot"."issue_id" = "issue"."id"
    1.71 +              AND "snapshot"."event" = "issue"."latest_snapshot_event"
    1.72 +              AND "snapshot"."member_id" = "opinion"."member_id"
    1.73 +              WHERE "issue"."id" = "issue_id_p"
    1.74 +              AND "opinion"."suggestion_id" = "suggestion_id_v"
    1.75                AND "opinion"."degree" = -1
    1.76                AND "opinion"."fulfilled" = TRUE
    1.77              ),
    1.78              "plus1_unfulfilled_count" = (
    1.79                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.80 -              FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.81 -              ON "opinion"."member_id" = "snapshot"."member_id"
    1.82 -              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.83 -              AND "snapshot"."issue_id" = "issue_id_p"
    1.84 +              FROM "issue" CROSS JOIN "opinion"
    1.85 +              JOIN "direct_interest_snapshot" AS "snapshot"
    1.86 +              ON "snapshot"."issue_id" = "issue"."id"
    1.87 +              AND "snapshot"."event" = "issue"."latest_snapshot_event"
    1.88 +              AND "snapshot"."member_id" = "opinion"."member_id"
    1.89 +              WHERE "issue"."id" = "issue_id_p"
    1.90 +              AND "opinion"."suggestion_id" = "suggestion_id_v"
    1.91                AND "opinion"."degree" = 1
    1.92                AND "opinion"."fulfilled" = FALSE
    1.93              ),
    1.94              "plus1_fulfilled_count" = (
    1.95                SELECT coalesce(sum("snapshot"."weight"), 0)
    1.96 -              FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
    1.97 -              ON "opinion"."member_id" = "snapshot"."member_id"
    1.98 -              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
    1.99 -              AND "snapshot"."issue_id" = "issue_id_p"
   1.100 +              FROM "issue" CROSS JOIN "opinion"
   1.101 +              JOIN "direct_interest_snapshot" AS "snapshot"
   1.102 +              ON "snapshot"."issue_id" = "issue"."id"
   1.103 +              AND "snapshot"."event" = "issue"."latest_snapshot_event"
   1.104 +              AND "snapshot"."member_id" = "opinion"."member_id"
   1.105 +              WHERE "issue"."id" = "issue_id_p"
   1.106 +              AND "opinion"."suggestion_id" = "suggestion_id_v"
   1.107                AND "opinion"."degree" = 1
   1.108                AND "opinion"."fulfilled" = TRUE
   1.109              ),
   1.110              "plus2_unfulfilled_count" = (
   1.111                SELECT coalesce(sum("snapshot"."weight"), 0)
   1.112 -              FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
   1.113 -              ON "opinion"."member_id" = "snapshot"."member_id"
   1.114 -              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
   1.115 -              AND "snapshot"."issue_id" = "issue_id_p"
   1.116 +              FROM "issue" CROSS JOIN "opinion"
   1.117 +              JOIN "direct_interest_snapshot" AS "snapshot"
   1.118 +              ON "snapshot"."issue_id" = "issue"."id"
   1.119 +              AND "snapshot"."event" = "issue"."latest_snapshot_event"
   1.120 +              AND "snapshot"."member_id" = "opinion"."member_id"
   1.121 +              WHERE "issue"."id" = "issue_id_p"
   1.122 +              AND "opinion"."suggestion_id" = "suggestion_id_v"
   1.123                AND "opinion"."degree" = 2
   1.124                AND "opinion"."fulfilled" = FALSE
   1.125              ),
   1.126              "plus2_fulfilled_count" = (
   1.127                SELECT coalesce(sum("snapshot"."weight"), 0)
   1.128 -              FROM "opinion" JOIN "direct_interest_snapshot" AS "snapshot"
   1.129 -              ON "opinion"."member_id" = "snapshot"."member_id"
   1.130 -              WHERE "opinion"."suggestion_id" = "suggestion_id_v"
   1.131 -              AND "snapshot"."issue_id" = "issue_id_p"
   1.132 +              FROM "issue" CROSS JOIN "opinion"
   1.133 +              JOIN "direct_interest_snapshot" AS "snapshot"
   1.134 +              ON "snapshot"."issue_id" = "issue"."id"
   1.135 +              AND "snapshot"."event" = "issue"."latest_snapshot_event"
   1.136 +              AND "snapshot"."member_id" = "opinion"."member_id"
   1.137 +              WHERE "issue"."id" = "issue_id_p"
   1.138 +              AND "opinion"."suggestion_id" = "suggestion_id_v"
   1.139                AND "opinion"."degree" = 2
   1.140                AND "opinion"."fulfilled" = TRUE
   1.141              )

Impressum / About Us