From: Bill Erickson Date: Tue, 2 Aug 2011 15:26:19 +0000 (-0400) Subject: Stamped upgrade script for user/miker/replace_field_fix X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=30edf988192a0498c98f36dfe22eac1042348fcd;p=evergreen%2Ftadl.git Stamped upgrade script for user/miker/replace_field_fix 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 9b11ed685f..3fd9e180fe 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -57,7 +57,7 @@ CREATE TABLE config.upgrade_log ( install_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW() ); -INSERT INTO config.upgrade_log (version) VALUES ('0587'); -- dbs/berick +INSERT INTO config.upgrade_log (version) VALUES ('0588'); -- miker/berick CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, diff --git a/Open-ILS/src/sql/Pg/upgrade/0588.schema.replace_field-default-value.sql b/Open-ILS/src/sql/Pg/upgrade/0588.schema.replace_field-default-value.sql new file mode 100644 index 0000000000..77320a42a1 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/0588.schema.replace_field-default-value.sql @@ -0,0 +1,36 @@ +BEGIN; + +INSERT INTO config.upgrade_log (version) VALUES ('0588'); + +CREATE OR REPLACE FUNCTION vandelay.replace_field ( target_xml TEXT, source_xml TEXT, field TEXT ) RETURNS TEXT AS $_$ +DECLARE + xml_output TEXT; + parsed_target TEXT; + curr_field TEXT; +BEGIN + + parsed_target := vandelay.strip_field( target_xml, ''); -- this dance normalizes the format of the xml for the IF below + xml_output := parsed_target; -- if there are no replace rules, just return the input + + FOR curr_field IN SELECT UNNEST( STRING_TO_ARRAY(field, ',') ) LOOP -- naive split, but it's the same we use in the perl + + xml_output := vandelay.strip_field( parsed_target, curr_field); + + IF xml_output <> parsed_target AND curr_field ~ E'~' THEN + -- we removed something, and there was a regexp restriction in the curr_field definition, so proceed + xml_output := vandelay.add_field( xml_output, source_xml, curr_field, 1 ); + ELSIF curr_field !~ E'~' THEN + -- No regexp restriction, add the curr_field + xml_output := vandelay.add_field( xml_output, source_xml, curr_field, 0 ); + END IF; + + parsed_target := xml_output; -- in prep for any following loop iterations + + END LOOP; + + RETURN xml_output; +END; +$_$ LANGUAGE PLPGSQL; + + +COMMIT; diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.replace_field-default-value.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.replace_field-default-value.sql deleted file mode 100644 index f8e5b28617..0000000000 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.replace_field-default-value.sql +++ /dev/null @@ -1,41 +0,0 @@ --- Evergreen DB patch XXXX.schema.replace_field-default-value.sql --- --- Return the input XML when no replace rule is provided --- -BEGIN; - --- check whether patch can be applied -SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version); - -CREATE OR REPLACE FUNCTION vandelay.replace_field ( target_xml TEXT, source_xml TEXT, field TEXT ) RETURNS TEXT AS $_$ -DECLARE - xml_output TEXT; - parsed_target TEXT; - curr_field TEXT; -BEGIN - - parsed_target := vandelay.strip_field( target_xml, ''); -- this dance normalizes the format of the xml for the IF below - xml_output := parsed_target; -- if there are no replace rules, just return the input - - FOR curr_field IN SELECT UNNEST( STRING_TO_ARRAY(field, ',') ) LOOP -- naive split, but it's the same we use in the perl - - xml_output := vandelay.strip_field( parsed_target, curr_field); - - IF xml_output <> parsed_target AND curr_field ~ E'~' THEN - -- we removed something, and there was a regexp restriction in the curr_field definition, so proceed - xml_output := vandelay.add_field( xml_output, source_xml, curr_field, 1 ); - ELSIF curr_field !~ E'~' THEN - -- No regexp restriction, add the curr_field - xml_output := vandelay.add_field( xml_output, source_xml, curr_field, 0 ); - END IF; - - parsed_target := xml_output; -- in prep for any following loop iterations - - END LOOP; - - RETURN xml_output; -END; -$_$ LANGUAGE PLPGSQL; - - -COMMIT;