User activity : only delete transient activity for user/type
authorBill Erickson <berick@esilibrary.com>
Thu, 8 Mar 2012 18:13:25 +0000 (13:13 -0500)
committerThomas Berezansky <tsbere@mvlc.org>
Thu, 8 Mar 2012 18:50:07 +0000 (13:50 -0500)
Repairs a bug spotted by Thomas Berezansky where the addition of a new
activity for a transient type would delete all existing activity
entries.

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Open-ILS/src/sql/Pg/999.functions.global.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.user-activity.sql

index 69d9cbe..c1df4af 100644 (file)
@@ -2097,8 +2097,11 @@ $F$ LANGUAGE SQL;
 -- remove transient activity entries on insert of new entries
 CREATE OR REPLACE FUNCTION actor.usr_activity_transient_trg () RETURNS TRIGGER AS $$
 BEGIN
-    DELETE FROM actor.usr_activity USING config.usr_activity_type atype
-        WHERE atype.transient AND NEW.etype = atype.id;
+    DELETE FROM actor.usr_activity act USING config.usr_activity_type atype
+        WHERE atype.transient AND 
+            NEW.etype = atype.id AND
+            act.etype = atype.id AND
+            act.usr = NEW.usr;
     RETURN NEW;
 END;
 $$ LANGUAGE PLPGSQL;
index de8cc5e..576fe7f 100644 (file)
@@ -34,8 +34,11 @@ CREATE TABLE actor.usr_activity (
 -- remove transient activity entries on insert of new entries
 CREATE OR REPLACE FUNCTION actor.usr_activity_transient_trg () RETURNS TRIGGER AS $$
 BEGIN
-    DELETE FROM actor.usr_activity USING config.usr_activity_type atype
-        WHERE atype.transient AND NEW.etype = atype.id;
+    DELETE FROM actor.usr_activity act USING config.usr_activity_type atype
+        WHERE atype.transient AND 
+            NEW.etype = atype.id AND
+            act.etype = atype.id AND
+            act.usr = NEW.usr;
     RETURN NEW;
 END;
 $$ LANGUAGE PLPGSQL;