From: Bill Erickson Date: Mon, 23 Oct 2017 16:34:04 +0000 (-0400) Subject: JBAS-1764 A/T purge SQL repairs X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=a6a1eb77a6278e445e3a30be3d245448e6d08c5c;p=working%2FEvergreen.git JBAS-1764 A/T purge SQL repairs Signed-off-by: Bill Erickson --- diff --git a/KCLS/sql/schema/deploy/at-purge-interval-data.sql b/KCLS/sql/schema/deploy/at-purge-interval-data.sql index e58347eae0..34b65ff405 100644 --- a/KCLS/sql/schema/deploy/at-purge-interval-data.sql +++ b/KCLS/sql/schema/deploy/at-purge-interval-data.sql @@ -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 diff --git a/KCLS/sql/schema/deploy/at-purge-interval.sql b/KCLS/sql/schema/deploy/at-purge-interval.sql index edf225839f..2638c379f9 100644 --- a/KCLS/sql/schema/deploy/at-purge-interval.sql +++ b/KCLS/sql/schema/deploy/at-purge-interval.sql @@ -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;