From 595b076e3ee9b502006fa96cd42ccb8ca739ae26 Mon Sep 17 00:00:00 2001 From: miker Date: Thu, 23 Dec 2010 06:11:36 +0000 Subject: [PATCH] correcting upgrade script for recent vandelay.replace_field improvements git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_6_2@19058 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/sql/Pg/1.6.1-1.6.2-upgrade-db.sql | 29 +++++++++++++++++--------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/Open-ILS/src/sql/Pg/1.6.1-1.6.2-upgrade-db.sql b/Open-ILS/src/sql/Pg/1.6.1-1.6.2-upgrade-db.sql index d68146a3c6..21899cea2b 100644 --- a/Open-ILS/src/sql/Pg/1.6.1-1.6.2-upgrade-db.sql +++ b/Open-ILS/src/sql/Pg/1.6.1-1.6.2-upgrade-db.sql @@ -208,17 +208,26 @@ CREATE OR REPLACE FUNCTION vandelay.replace_field ( target_xml TEXT, source_xml DECLARE xml_output TEXT; parsed_target TEXT; + curr_field TEXT; BEGIN - parsed_target := vandelay.strip_field( target_xml, ''); -- this dance normalized the format of the xml for the IF below - xml_output := vandelay.strip_field( parsed_target, field); - - IF xml_output <> parsed_target AND field ~ E'~' THEN - -- we removed something, and there was a regexp restriction in the field definition, so proceed - xml_output := vandelay.add_field( xml_output, source_xml, field, 1 ); - ELSIF field !~ E'~' THEN - -- No regexp restriction, add the field - xml_output := vandelay.add_field( xml_output, source_xml, field, 0 ); - END IF; + + parsed_target := vandelay.strip_field( target_xml, ''); -- this dance normalizes the format of the xml for the IF below + + 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; -- 2.11.0