From: Bill Erickson <berick@esilibrary.com> Date: Fri, 3 Jun 2011 12:35:21 +0000 (-0400) Subject: Wrapped upgrade script X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=7d1040a86595c50dadb235c5c014ae7a5e9294f4;p=evergreen%2Fmasslnc.git Wrapped upgrade script Signed-off-by: Bill Erickson <berick@esilibrary.com> --- diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index 743be6be86..ed2c3fa410 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -86,7 +86,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 ('0545', :eg_version); -- berick +INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0546', :eg_version); -- berick CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, diff --git a/Open-ILS/src/sql/Pg/upgrade/0546.schema.sip_statcats.sql b/Open-ILS/src/sql/Pg/upgrade/0546.schema.sip_statcats.sql new file mode 100644 index 0000000000..81e3bfe4d4 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/0546.schema.sip_statcats.sql @@ -0,0 +1,84 @@ +-- Evergreen DB patch 0546.schema.sip_statcats.sql +BEGIN; + + +-- check whether patch can be applied +SELECT evergreen.upgrade_deps_block_check('0546', :eg_version); + +CREATE TABLE actor.stat_cat_sip_fields ( + field CHAR(2) PRIMARY KEY, + name TEXT NOT NULL, + one_only BOOL NOT NULL DEFAULT FALSE +); +COMMENT ON TABLE actor.stat_cat_sip_fields IS $$ +Actor Statistical Category SIP Fields + +Contains the list of valid SIP Field identifiers for +Statistical Categories. +$$; +ALTER TABLE actor.stat_cat + ADD COLUMN sip_field CHAR(2) REFERENCES actor.stat_cat_sip_fields(field) ON UPDATE CASCADE ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED, + ADD COLUMN sip_format TEXT; + +CREATE FUNCTION actor.stat_cat_check() RETURNS trigger AS $func$ +DECLARE + sipfield actor.stat_cat_sip_fields%ROWTYPE; + use_count INT; +BEGIN + IF NEW.sip_field IS NOT NULL THEN + SELECT INTO sipfield * FROM actor.stat_cat_sip_fields WHERE field = NEW.sip_field; + IF sipfield.one_only THEN + SELECT INTO use_count count(id) FROM actor.stat_cat WHERE sip_field = NEW.sip_field AND id != NEW.id; + IF use_count > 0 THEN + RAISE EXCEPTION 'Sip field cannot be used twice'; + END IF; + END IF; + END IF; + RETURN NEW; +END; +$func$ LANGUAGE PLPGSQL; + +CREATE TRIGGER actor_stat_cat_sip_update_trigger + BEFORE INSERT OR UPDATE ON actor.stat_cat FOR EACH ROW + EXECUTE PROCEDURE actor.stat_cat_check(); + +CREATE TABLE asset.stat_cat_sip_fields ( + field CHAR(2) PRIMARY KEY, + name TEXT NOT NULL, + one_only BOOL NOT NULL DEFAULT FALSE +); +COMMENT ON TABLE asset.stat_cat_sip_fields IS $$ +Asset Statistical Category SIP Fields + +Contains the list of valid SIP Field identifiers for +Statistical Categories. +$$; + +ALTER TABLE asset.stat_cat + ADD COLUMN sip_field CHAR(2) REFERENCES asset.stat_cat_sip_fields(field) ON UPDATE CASCADE ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED, + ADD COLUMN sip_format TEXT; + +CREATE FUNCTION asset.stat_cat_check() RETURNS trigger AS $func$ +DECLARE + sipfield asset.stat_cat_sip_fields%ROWTYPE; + use_count INT; +BEGIN + IF NEW.sip_field IS NOT NULL THEN + SELECT INTO sipfield * FROM asset.stat_cat_sip_fields WHERE field = NEW.sip_field; + IF sipfield.one_only THEN + SELECT INTO use_count count(id) FROM asset.stat_cat WHERE sip_field = NEW.sip_field AND id != NEW.id; + IF use_count > 0 THEN + RAISE EXCEPTION 'Sip field cannot be used twice'; + END IF; + END IF; + END IF; + RETURN NEW; +END; +$func$ LANGUAGE PLPGSQL; + +CREATE TRIGGER asset_stat_cat_sip_update_trigger + BEFORE INSERT OR UPDATE ON asset.stat_cat FOR EACH ROW + EXECUTE PROCEDURE asset.stat_cat_check(); + + +COMMIT; diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.sip_statcats.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.sip_statcats.sql deleted file mode 100644 index aa9c5cd956..0000000000 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.sip_statcats.sql +++ /dev/null @@ -1,74 +0,0 @@ -CREATE TABLE actor.stat_cat_sip_fields ( - field CHAR(2) PRIMARY KEY, - name TEXT NOT NULL, - one_only BOOL NOT NULL DEFAULT FALSE -); -COMMENT ON TABLE actor.stat_cat_sip_fields IS $$ -Actor Statistical Category SIP Fields - -Contains the list of valid SIP Field identifiers for -Statistical Categories. -$$; -ALTER TABLE actor.stat_cat - ADD COLUMN sip_field CHAR(2) REFERENCES actor.stat_cat_sip_fields(field) ON UPDATE CASCADE ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED, - ADD COLUMN sip_format TEXT; - -CREATE FUNCTION actor.stat_cat_check() RETURNS trigger AS $func$ -DECLARE - sipfield actor.stat_cat_sip_fields%ROWTYPE; - use_count INT; -BEGIN - IF NEW.sip_field IS NOT NULL THEN - SELECT INTO sipfield * FROM actor.stat_cat_sip_fields WHERE field = NEW.sip_field; - IF sipfield.one_only THEN - SELECT INTO use_count count(id) FROM actor.stat_cat WHERE sip_field = NEW.sip_field AND id != NEW.id; - IF use_count > 0 THEN - RAISE EXCEPTION 'Sip field cannot be used twice'; - END IF; - END IF; - END IF; - RETURN NEW; -END; -$func$ LANGUAGE PLPGSQL; - -CREATE TRIGGER actor_stat_cat_sip_update_trigger - BEFORE INSERT OR UPDATE ON actor.stat_cat FOR EACH ROW - EXECUTE PROCEDURE actor.stat_cat_check(); - -CREATE TABLE asset.stat_cat_sip_fields ( - field CHAR(2) PRIMARY KEY, - name TEXT NOT NULL, - one_only BOOL NOT NULL DEFAULT FALSE -); -COMMENT ON TABLE asset.stat_cat_sip_fields IS $$ -Asset Statistical Category SIP Fields - -Contains the list of valid SIP Field identifiers for -Statistical Categories. -$$; - -ALTER TABLE asset.stat_cat - ADD COLUMN sip_field CHAR(2) REFERENCES asset.stat_cat_sip_fields(field) ON UPDATE CASCADE ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED, - ADD COLUMN sip_format TEXT; - -CREATE FUNCTION asset.stat_cat_check() RETURNS trigger AS $func$ -DECLARE - sipfield asset.stat_cat_sip_fields%ROWTYPE; - use_count INT; -BEGIN - IF NEW.sip_field IS NOT NULL THEN - SELECT INTO sipfield * FROM asset.stat_cat_sip_fields WHERE field = NEW.sip_field; - IF sipfield.one_only THEN - SELECT INTO use_count count(id) FROM asset.stat_cat WHERE sip_field = NEW.sip_field AND id != NEW.id; - IF use_count > 0 THEN - RAISE EXCEPTION 'Sip field cannot be used twice'; - END IF; - END IF; - END IF; - RETURN NEW; -END; -$func$ LANGUAGE PLPGSQL; - -CREATE TRIGGER asset_stat_cat_sip_update_trigger - BEFORE INSERT OR UPDATE ON asset.stat_cat FOR EACH ROW - EXECUTE PROCEDURE asset.stat_cat_check();