JBAS-1764 A/T purge SQL repairs
authorBill Erickson <berickxx@gmail.com>
Mon, 23 Oct 2017 16:34:04 +0000 (12:34 -0400)
committerBill Erickson <berickxx@gmail.com>
Thu, 21 Mar 2019 19:46:23 +0000 (15:46 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
KCLS/sql/schema/deploy/at-purge-interval-data.sql
KCLS/sql/schema/deploy/at-purge-interval.sql

index e58347e..34b65ff 100644 (file)
@@ -27,11 +27,42 @@ UPDATE action_trigger.hook SET passive = FALSE WHERE key IN (
 -- Apply some max_delay values where needed.
 -- These defs are unused, but best to apply a max_delay now so we can
 -- apply a retention_interval that won't be forgotten later.
-UPDATE action_trigger.event_definition SET max_delay = '10 days' 
+UPDATE action_trigger.event_definition 
+    SET max_delay = delay + '10 days'::INTERVAL
     WHERE id IN (2, 9, 24, 36, 49) AND max_delay IS NULL;
 
--- most events are purged after a short period
-UPDATE action_trigger.event_definition SET retention_interval = '1 day';
+-- "Hold Expires from Shelf Soon" -- delay=-1 day
+UPDATE action_trigger.event_definition 
+    SET max_delay = '0 days' WHERE id = 7;
+
+/*
+SELECT def.id, def.name, def.delay, hook.key 
+    FROM action_trigger.event_definition def 
+    JOIN action_trigger.hook hook ON (hook.key = def.hook) 
+    WHERE hook.passive AND def.max_delay is NULL;
+*/
+
+-- by default purge all active events after 1 day
+UPDATE action_trigger.event_definition 
+    SET retention_interval = '1 day'
+    WHERE id IN (
+        SELECT def.id 
+        FROM action_trigger.event_definition def
+        JOIN action_trigger.hook hook ON (hook.key = def.hook)
+        WHERE NOT hook.passive
+    );
+
+-- by default, purge all passive events 1 day after the allowed
+-- purge interval has passed.
+UPDATE action_trigger.event_definition 
+    SET retention_interval = (max_delay - delay) + '1 day'::INTERVAL
+    WHERE id IN (
+        SELECT def.id 
+        FROM action_trigger.event_definition def
+        JOIN action_trigger.hook hook ON (hook.key = def.hook)
+        WHERE hook.passive
+    );
+
 
 -- keep these events forever
 UPDATE action_trigger.event_definition 
index edf2258..2638c37 100644 (file)
@@ -29,10 +29,12 @@ BEGIN
             ABS(EXTRACT(EPOCH FROM (NEW.max_delay - NEW.delay))) THEN
             RETURN NEW; -- all good
         ELSE
-            RAISE EXCEPTION 'retention_interval is too short';
+            RAISE EXCEPTION 'retention_interval is too short for def [%] %', 
+                NEW.id, NEW.name;
         END IF;
     ELSE
-        RAISE EXCEPTION 'retention_interval requires max_delay';
+        RAISE EXCEPTION 'retention_interval requires max_delay for def [%] %', 
+            NEW.id, NEW.name;
     END IF;
 END;
 $_$ LANGUAGE PLPGSQL;