From: Dan Wells Date: Tue, 18 Feb 2014 17:01:29 +0000 (-0500) Subject: Stamping 0858: Fixed field enhancements X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=3eee581dd7ba3f0c9acb5522cc7c8c32d262184d;p=Evergreen.git Stamping 0858: Fixed field enhancements Also, move test file to a possibly better location. Signed-off-by: Dan Wells --- diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index 914bf2a199..c9db3846fc 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 ('0857', :eg_version); -- miker/jeff +INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0858', :eg_version); -- senator/dbwells CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, diff --git a/Open-ILS/src/sql/Pg/live_t/XXXX.fixed_field_enhancements.pg b/Open-ILS/src/sql/Pg/live_t/XXXX.fixed_field_enhancements.pg deleted file mode 100644 index d48c4a0cda..0000000000 --- a/Open-ILS/src/sql/Pg/live_t/XXXX.fixed_field_enhancements.pg +++ /dev/null @@ -1,65 +0,0 @@ -\set ECHO -\set QUIET 1 --- Turn off echo and keep things quiet. - --- Format the output for nice TAP. -\pset format unaligned -\pset tuples_only true -\pset pager - --- Revert all changes on failure. -\set ON_ERROR_ROLLBACK 1 -\set ON_ERROR_STOP true -\set QUIET 1 - --- let's do this thing -BEGIN; - -SELECT plan(1); - -CREATE OR REPLACE FUNCTION pg_temp.test_phys_char_no_overlaps() RETURNS BOOL AS $$ -DECLARE - ptype TEXT; - str TEXT; - subf RECORD; - gap INT; -BEGIN - FOR ptype IN - SELECT ptype_key FROM config.marc21_physical_characteristic_type_map - LOOP - str := ptype; - - FOR subf IN - SELECT subfield, start_pos, length - FROM config.marc21_physical_characteristic_subfield_map - WHERE ptype_key = ptype - ORDER BY subfield - LOOP - gap := subf.start_pos - LENGTH(str); - IF gap > 0 THEN - str := str || REPEAT(' ', gap); - ELSIF gap < 0 THEN - -- This is a WARNING instead of an ERROR just so we can - -- fail the test nicely. But it really is an error. - RAISE WARNING 'subfield % for ptype % backs up!', - ptype, subf.subfield; - RETURN FALSE; - END IF; - str := str || REPEAT('|', subf.length); - END LOOP; - -- RAISE DEBUG '%', str; - END LOOP; - - RETURN TRUE; -END; -$$ LANGUAGE PLPGSQL; - -SELECT is( - pg_temp.test_phys_char_no_overlaps(), - TRUE, - 'Ensure that no set of subfields for a given Physical Characteristics ''type'' (00/a) contains any overlaps.' -); - -SELECT * FROM finish(); -ROLLBACK; - diff --git a/Open-ILS/src/sql/Pg/t/regress/lp1272074_0858_fixed_field_enhancements.pg b/Open-ILS/src/sql/Pg/t/regress/lp1272074_0858_fixed_field_enhancements.pg new file mode 100644 index 0000000000..d48c4a0cda --- /dev/null +++ b/Open-ILS/src/sql/Pg/t/regress/lp1272074_0858_fixed_field_enhancements.pg @@ -0,0 +1,65 @@ +\set ECHO +\set QUIET 1 +-- Turn off echo and keep things quiet. + +-- Format the output for nice TAP. +\pset format unaligned +\pset tuples_only true +\pset pager + +-- Revert all changes on failure. +\set ON_ERROR_ROLLBACK 1 +\set ON_ERROR_STOP true +\set QUIET 1 + +-- let's do this thing +BEGIN; + +SELECT plan(1); + +CREATE OR REPLACE FUNCTION pg_temp.test_phys_char_no_overlaps() RETURNS BOOL AS $$ +DECLARE + ptype TEXT; + str TEXT; + subf RECORD; + gap INT; +BEGIN + FOR ptype IN + SELECT ptype_key FROM config.marc21_physical_characteristic_type_map + LOOP + str := ptype; + + FOR subf IN + SELECT subfield, start_pos, length + FROM config.marc21_physical_characteristic_subfield_map + WHERE ptype_key = ptype + ORDER BY subfield + LOOP + gap := subf.start_pos - LENGTH(str); + IF gap > 0 THEN + str := str || REPEAT(' ', gap); + ELSIF gap < 0 THEN + -- This is a WARNING instead of an ERROR just so we can + -- fail the test nicely. But it really is an error. + RAISE WARNING 'subfield % for ptype % backs up!', + ptype, subf.subfield; + RETURN FALSE; + END IF; + str := str || REPEAT('|', subf.length); + END LOOP; + -- RAISE DEBUG '%', str; + END LOOP; + + RETURN TRUE; +END; +$$ LANGUAGE PLPGSQL; + +SELECT is( + pg_temp.test_phys_char_no_overlaps(), + TRUE, + 'Ensure that no set of subfields for a given Physical Characteristics ''type'' (00/a) contains any overlaps.' +); + +SELECT * FROM finish(); +ROLLBACK; + diff --git a/Open-ILS/src/sql/Pg/upgrade/0858.data.fixed_field_enhancements.sql b/Open-ILS/src/sql/Pg/upgrade/0858.data.fixed_field_enhancements.sql new file mode 100644 index 0000000000..1e445cb426 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/0858.data.fixed_field_enhancements.sql @@ -0,0 +1,11 @@ +BEGIN; + +SELECT evergreen.upgrade_deps_block_check('0858', :eg_version); + +-- Fix faulty seed data. Otherwise for ptype 'f' we have subfield 'e' +-- overlapping subfield 'd' +UPDATE config.marc21_physical_characteristic_subfield_map + SET start_pos = 5 + WHERE ptype_key = 'f' AND subfield = 'e'; + +COMMIT; diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.fixed_field_enhancements.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.fixed_field_enhancements.sql deleted file mode 100644 index 2128422712..0000000000 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.fixed_field_enhancements.sql +++ /dev/null @@ -1,11 +0,0 @@ -BEGIN; - --- SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version); - --- Fix faulty seed data. Otherwise for ptype 'f' we have subfield 'e' --- overlapping subfield 'd' -UPDATE config.marc21_physical_characteristic_subfield_map - SET start_pos = 5 - WHERE ptype_key = 'f' AND subfield = 'e'; - -COMMIT;