From 44a1b234e4ec29ef5ad3e77be0ac98f5371c5046 Mon Sep 17 00:00:00 2001 From: Mike Rylander Date: Wed, 29 Oct 2014 10:37:29 -0400 Subject: [PATCH] LP#1386347: Clear hold-copy-map efficiently When capturing or canceling a hold, we can clear the hold-copy-map with a trigger, saving the time of the user, and making the business logic simpler. LP#1386347 copy map trigger wants a RETURN Signed-off-by: Mike Rylander Signed-off-by: Bill Erickson Conflicts: Open-ILS/src/sql/Pg/090.schema.action.sql --- .../Pg/upgrade/XXXX.schema.clear_hold_copy_map.sql | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.clear_hold_copy_map.sql diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.clear_hold_copy_map.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.clear_hold_copy_map.sql new file mode 100644 index 0000000000..ee0191df66 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.clear_hold_copy_map.sql @@ -0,0 +1,20 @@ +BEGIN; + +CREATE OR REPLACE FUNCTION action.hold_request_clear_map () RETURNS TRIGGER AS $$ +BEGIN + DELETE FROM action.hold_copy_map WHERE hold = NEW.id; + RETURN NEW; +END; +$$ LANGUAGE PLPGSQL; + +CREATE TRIGGER hold_request_clear_map_tgr + AFTER UPDATE ON action.hold_request + FOR EACH ROW + WHEN ( + (NEW.cancel_time IS NOT NULL AND OLD.cancel_time IS NULL) + OR (NEW.capture_time IS NOT NULL AND OLD.capture_time IS NULL) + ) + EXECUTE PROCEDURE action.hold_request_clear_map(); + +COMMIT; + -- 2.11.0