From: Bill Erickson Date: Tue, 17 Jan 2017 20:08:58 +0000 (-0500) Subject: LP#1657237 Stamping rhrr mat view trigger repair X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=637afff589653e589385f94090cb9c60e3f34ea5;p=Evergreen.git LP#1657237 Stamping rhrr mat view trigger repair Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index a9a4de19cc..1e6746ae95 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -91,7 +91,7 @@ CREATE TRIGGER no_overlapping_deps BEFORE INSERT OR UPDATE ON config.db_patch_dependencies FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates'); -INSERT INTO config.upgrade_log (version, applied_to) VALUES ('1003', :eg_version); -- gmcharlt/rhamby/csharp +INSERT INTO config.upgrade_log (version, applied_to) VALUES ('1004', :eg_version); -- miker/gmcharlt/berick CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, diff --git a/Open-ILS/src/sql/Pg/upgrade/1004.function.hold-move-trigger-bug.sql b/Open-ILS/src/sql/Pg/upgrade/1004.function.hold-move-trigger-bug.sql new file mode 100644 index 0000000000..1e3dfd11ef --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/1004.function.hold-move-trigger-bug.sql @@ -0,0 +1,51 @@ +BEGIN; + +SELECT evergreen.upgrade_deps_block_check('1004', :eg_version); + +CREATE OR REPLACE FUNCTION reporter.hold_request_record_mapper () RETURNS TRIGGER AS $$ +BEGIN + IF TG_OP = 'INSERT' THEN + INSERT INTO reporter.hold_request_record (id, target, hold_type, bib_record) + SELECT NEW.id, + NEW.target, + NEW.hold_type, + CASE + WHEN NEW.hold_type = 'T' + THEN NEW.target + WHEN NEW.hold_type = 'I' + THEN (SELECT ssub.record_entry FROM serial.subscription ssub JOIN serial.issuance si ON (si.subscription = ssub.id) WHERE si.id = NEW.target) + WHEN NEW.hold_type = 'V' + THEN (SELECT cn.record FROM asset.call_number cn WHERE cn.id = NEW.target) + WHEN NEW.hold_type IN ('C','R','F') + THEN (SELECT cn.record FROM asset.call_number cn JOIN asset.copy cp ON (cn.id = cp.call_number) WHERE cp.id = NEW.target) + WHEN NEW.hold_type = 'M' + THEN (SELECT mr.master_record FROM metabib.metarecord mr WHERE mr.id = NEW.target) + WHEN NEW.hold_type = 'P' + THEN (SELECT bmp.record FROM biblio.monograph_part bmp WHERE bmp.id = NEW.target) + END AS bib_record; + ELSIF TG_OP = 'UPDATE' AND (OLD.target <> NEW.target OR OLD.hold_type <> NEW.hold_type) THEN + UPDATE reporter.hold_request_record + SET target = NEW.target, + hold_type = NEW.hold_type, + bib_record = CASE + WHEN NEW.hold_type = 'T' + THEN NEW.target + WHEN NEW.hold_type = 'I' + THEN (SELECT ssub.record_entry FROM serial.subscription ssub JOIN serial.issuance si ON (si.subscription = ssub.id) WHERE si.id = NEW.target) + WHEN NEW.hold_type = 'V' + THEN (SELECT cn.record FROM asset.call_number cn WHERE cn.id = NEW.target) + WHEN NEW.hold_type IN ('C','R','F') + THEN (SELECT cn.record FROM asset.call_number cn JOIN asset.copy cp ON (cn.id = cp.call_number) WHERE cp.id = NEW.target) + WHEN NEW.hold_type = 'M' + THEN (SELECT mr.master_record FROM metabib.metarecord mr WHERE mr.id = NEW.target) + WHEN NEW.hold_type = 'P' + THEN (SELECT bmp.record FROM biblio.monograph_part bmp WHERE bmp.id = NEW.target) + END + WHERE id = NEW.id; + END IF; + RETURN NEW; +END; +$$ LANGUAGE PLPGSQL; + +COMMIT; + diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.function.hold-move-trigger-bug.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.function.hold-move-trigger-bug.sql deleted file mode 100644 index 919283649a..0000000000 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.function.hold-move-trigger-bug.sql +++ /dev/null @@ -1,49 +0,0 @@ -BEGIN; - -CREATE OR REPLACE FUNCTION reporter.hold_request_record_mapper () RETURNS TRIGGER AS $$ -BEGIN - IF TG_OP = 'INSERT' THEN - INSERT INTO reporter.hold_request_record (id, target, hold_type, bib_record) - SELECT NEW.id, - NEW.target, - NEW.hold_type, - CASE - WHEN NEW.hold_type = 'T' - THEN NEW.target - WHEN NEW.hold_type = 'I' - THEN (SELECT ssub.record_entry FROM serial.subscription ssub JOIN serial.issuance si ON (si.subscription = ssub.id) WHERE si.id = NEW.target) - WHEN NEW.hold_type = 'V' - THEN (SELECT cn.record FROM asset.call_number cn WHERE cn.id = NEW.target) - WHEN NEW.hold_type IN ('C','R','F') - THEN (SELECT cn.record FROM asset.call_number cn JOIN asset.copy cp ON (cn.id = cp.call_number) WHERE cp.id = NEW.target) - WHEN NEW.hold_type = 'M' - THEN (SELECT mr.master_record FROM metabib.metarecord mr WHERE mr.id = NEW.target) - WHEN NEW.hold_type = 'P' - THEN (SELECT bmp.record FROM biblio.monograph_part bmp WHERE bmp.id = NEW.target) - END AS bib_record; - ELSIF TG_OP = 'UPDATE' AND (OLD.target <> NEW.target OR OLD.hold_type <> NEW.hold_type) THEN - UPDATE reporter.hold_request_record - SET target = NEW.target, - hold_type = NEW.hold_type, - bib_record = CASE - WHEN NEW.hold_type = 'T' - THEN NEW.target - WHEN NEW.hold_type = 'I' - THEN (SELECT ssub.record_entry FROM serial.subscription ssub JOIN serial.issuance si ON (si.subscription = ssub.id) WHERE si.id = NEW.target) - WHEN NEW.hold_type = 'V' - THEN (SELECT cn.record FROM asset.call_number cn WHERE cn.id = NEW.target) - WHEN NEW.hold_type IN ('C','R','F') - THEN (SELECT cn.record FROM asset.call_number cn JOIN asset.copy cp ON (cn.id = cp.call_number) WHERE cp.id = NEW.target) - WHEN NEW.hold_type = 'M' - THEN (SELECT mr.master_record FROM metabib.metarecord mr WHERE mr.id = NEW.target) - WHEN NEW.hold_type = 'P' - THEN (SELECT bmp.record FROM biblio.monograph_part bmp WHERE bmp.id = NEW.target) - END - WHERE id = NEW.id; - END IF; - RETURN NEW; -END; -$$ LANGUAGE PLPGSQL; - -COMMIT; -