From: Ben Shum Date: Thu, 10 Apr 2014 21:47:26 +0000 (-0400) Subject: LP#1304559 - stamping upgrade script for vandelay_record_attr_to_flat X-Git-Tag: sprint4-merge-nov22~2157 X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=f1fa38c29611f0e84d343d1543c3602cf6799b2b;p=working%2FEvergreen.git LP#1304559 - stamping upgrade script for vandelay_record_attr_to_flat Signed-off-by: Ben Shum --- diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index e604c7699b..9b0256002f 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 ('0878', :eg_version); -- miker/dbwells/gmcharlt +INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0879', :eg_version); -- dbwells/bshum CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, diff --git a/Open-ILS/src/sql/Pg/upgrade/0879.function.vandelay_record_attr_to_flat.sql b/Open-ILS/src/sql/Pg/upgrade/0879.function.vandelay_record_attr_to_flat.sql new file mode 100644 index 0000000000..76afdf16f2 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/0879.function.vandelay_record_attr_to_flat.sql @@ -0,0 +1,78 @@ +BEGIN; + +SELECT evergreen.upgrade_deps_block_check('0879', :eg_version); + +CREATE OR REPLACE FUNCTION vandelay._get_expr_push_jrow( + node vandelay.match_set_point, + tags_rstore HSTORE +) RETURNS VOID AS $$ +DECLARE + jrow TEXT; + my_alias TEXT; + op TEXT; + tagkey TEXT; + caseless BOOL; + jrow_count INT; + my_using TEXT; + my_join TEXT; +BEGIN + -- remember $1 is tags_rstore, and $2 is svf_rstore + + caseless := FALSE; + SELECT COUNT(*) INTO jrow_count FROM _vandelay_tmp_jrows; + IF jrow_count > 0 THEN + my_using := ' USING (record)'; + my_join := 'FULL OUTER JOIN'; + ELSE + my_using := ''; + my_join := 'FROM'; + END IF; + + IF node.tag IS NOT NULL THEN + caseless := (node.tag IN ('020', '022', '024')); + tagkey := node.tag; + IF node.subfield IS NOT NULL THEN + tagkey := tagkey || node.subfield; + END IF; + END IF; + + IF node.negate THEN + IF caseless THEN + op := 'NOT LIKE'; + ELSE + op := '<>'; + END IF; + ELSE + IF caseless THEN + op := 'LIKE'; + ELSE + op := '='; + END IF; + END IF; + + my_alias := 'n' || node.id::TEXT; + + jrow := my_join || ' (SELECT *, '; + IF node.tag IS NOT NULL THEN + jrow := jrow || node.quality || + ' AS quality FROM metabib.full_rec mfr WHERE mfr.tag = ''' || + node.tag || ''''; + IF node.subfield IS NOT NULL THEN + jrow := jrow || ' AND mfr.subfield = ''' || + node.subfield || ''''; + END IF; + jrow := jrow || ' AND ('; + jrow := jrow || vandelay._node_tag_comparisons(caseless, op, tags_rstore, tagkey); + jrow := jrow || ')) ' || my_alias || my_using || E'\n'; + ELSE -- svf + jrow := jrow || 'id AS record, ' || node.quality || + ' AS quality FROM metabib.record_attr_flat mraf WHERE mraf.attr = ''' || + node.svf || ''' AND mraf.value ' || op || ' $2->''' || node.svf || ''') ' || + my_alias || my_using || E'\n'; + END IF; + INSERT INTO _vandelay_tmp_jrows (j) VALUES (jrow); +END; +$$ LANGUAGE PLPGSQL; + +COMMIT; + diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.function.vandelay_record_attr_to_flat.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.function.vandelay_record_attr_to_flat.sql deleted file mode 100644 index 12ab394023..0000000000 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.function.vandelay_record_attr_to_flat.sql +++ /dev/null @@ -1,78 +0,0 @@ -BEGIN; - ---SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version); - -CREATE OR REPLACE FUNCTION vandelay._get_expr_push_jrow( - node vandelay.match_set_point, - tags_rstore HSTORE -) RETURNS VOID AS $$ -DECLARE - jrow TEXT; - my_alias TEXT; - op TEXT; - tagkey TEXT; - caseless BOOL; - jrow_count INT; - my_using TEXT; - my_join TEXT; -BEGIN - -- remember $1 is tags_rstore, and $2 is svf_rstore - - caseless := FALSE; - SELECT COUNT(*) INTO jrow_count FROM _vandelay_tmp_jrows; - IF jrow_count > 0 THEN - my_using := ' USING (record)'; - my_join := 'FULL OUTER JOIN'; - ELSE - my_using := ''; - my_join := 'FROM'; - END IF; - - IF node.tag IS NOT NULL THEN - caseless := (node.tag IN ('020', '022', '024')); - tagkey := node.tag; - IF node.subfield IS NOT NULL THEN - tagkey := tagkey || node.subfield; - END IF; - END IF; - - IF node.negate THEN - IF caseless THEN - op := 'NOT LIKE'; - ELSE - op := '<>'; - END IF; - ELSE - IF caseless THEN - op := 'LIKE'; - ELSE - op := '='; - END IF; - END IF; - - my_alias := 'n' || node.id::TEXT; - - jrow := my_join || ' (SELECT *, '; - IF node.tag IS NOT NULL THEN - jrow := jrow || node.quality || - ' AS quality FROM metabib.full_rec mfr WHERE mfr.tag = ''' || - node.tag || ''''; - IF node.subfield IS NOT NULL THEN - jrow := jrow || ' AND mfr.subfield = ''' || - node.subfield || ''''; - END IF; - jrow := jrow || ' AND ('; - jrow := jrow || vandelay._node_tag_comparisons(caseless, op, tags_rstore, tagkey); - jrow := jrow || ')) ' || my_alias || my_using || E'\n'; - ELSE -- svf - jrow := jrow || 'id AS record, ' || node.quality || - ' AS quality FROM metabib.record_attr_flat mraf WHERE mraf.attr = ''' || - node.svf || ''' AND mraf.value ' || op || ' $2->''' || node.svf || ''') ' || - my_alias || my_using || E'\n'; - END IF; - INSERT INTO _vandelay_tmp_jrows (j) VALUES (jrow); -END; -$$ LANGUAGE PLPGSQL; - -COMMIT; -