From: senator Date: Tue, 2 Nov 2010 16:43:33 +0000 (+0000) Subject: Surely this was meant to go here :-) X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=babe2183beae3a9d5c93e4fafd4975d6ebda8200;p=evergreen%2Fmasslnc.git Surely this was meant to go here :-) git-svn-id: svn://svn.open-ils.org/ILS/trunk@18585 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/sql/Pg/0454.function.authority_merge_records.sql b/Open-ILS/src/sql/Pg/0454.function.authority_merge_records.sql deleted file mode 100644 index a21a507be3..0000000000 --- a/Open-ILS/src/sql/Pg/0454.function.authority_merge_records.sql +++ /dev/null @@ -1,60 +0,0 @@ -BEGIN; - -INSERT INTO config.upgrade_log (version) VALUES ('0454'); -- dbs - -CREATE OR REPLACE FUNCTION authority.merge_records ( target_record BIGINT, source_record BIGINT ) RETURNS INT AS $func$ -DECLARE - moved_objects INT := 0; - bib_id INT := 0; - bib_rec biblio.record_entry%ROWTYPE; - auth_link authority.bib_linking%ROWTYPE; - ingest_same boolean; -BEGIN - - -- 1. Update all bib records with the ID from target_record in their $0 - FOR bib_rec IN SELECT bre.* FROM biblio.record_entry bre - INNER JOIN authority.bib_linking abl ON abl.bib = bre.id - WHERE abl.authority = source_record LOOP - - UPDATE biblio.record_entry - SET marc = REGEXP_REPLACE(marc, - E'([^<]*?\\))' || source_record || '<', - E'\\1' || target_record || '<', 'g') - WHERE id = bib_rec.id; - - moved_objects := moved_objects + 1; - END LOOP; - - -- 2. Grab the current value of reingest on same MARC flag - SELECT enabled INTO ingest_same - FROM config.internal_flag - WHERE name = 'ingest.reingest.force_on_same_marc' - ; - - -- 3. Temporarily set reingest on same to TRUE - UPDATE config.internal_flag - SET enabled = TRUE - WHERE name = 'ingest.reingest.force_on_same_marc' - ; - - -- 4. Make a harmless update to target_record to trigger auto-update - -- in linked bibliographic records - UPDATE authority.record_entry - SET DELETED = FALSE - WHERE id = source_record; - - -- 5. "Delete" source_record - DELETE FROM authority.record_entry - WHERE id = source_record; - - -- 6. Set "reingest on same MARC" flag back to initial value - UPDATE config.internal_flag - SET enabled = ingest_same - WHERE name = 'ingest.reingest.force_on_same_marc' - ; - - RETURN moved_objects; -END; -$func$ LANGUAGE plpgsql; - -COMMIT; diff --git a/Open-ILS/src/sql/Pg/upgrade/0454.function.authority_merge_records.sql b/Open-ILS/src/sql/Pg/upgrade/0454.function.authority_merge_records.sql new file mode 100644 index 0000000000..a21a507be3 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/0454.function.authority_merge_records.sql @@ -0,0 +1,60 @@ +BEGIN; + +INSERT INTO config.upgrade_log (version) VALUES ('0454'); -- dbs + +CREATE OR REPLACE FUNCTION authority.merge_records ( target_record BIGINT, source_record BIGINT ) RETURNS INT AS $func$ +DECLARE + moved_objects INT := 0; + bib_id INT := 0; + bib_rec biblio.record_entry%ROWTYPE; + auth_link authority.bib_linking%ROWTYPE; + ingest_same boolean; +BEGIN + + -- 1. Update all bib records with the ID from target_record in their $0 + FOR bib_rec IN SELECT bre.* FROM biblio.record_entry bre + INNER JOIN authority.bib_linking abl ON abl.bib = bre.id + WHERE abl.authority = source_record LOOP + + UPDATE biblio.record_entry + SET marc = REGEXP_REPLACE(marc, + E'([^<]*?\\))' || source_record || '<', + E'\\1' || target_record || '<', 'g') + WHERE id = bib_rec.id; + + moved_objects := moved_objects + 1; + END LOOP; + + -- 2. Grab the current value of reingest on same MARC flag + SELECT enabled INTO ingest_same + FROM config.internal_flag + WHERE name = 'ingest.reingest.force_on_same_marc' + ; + + -- 3. Temporarily set reingest on same to TRUE + UPDATE config.internal_flag + SET enabled = TRUE + WHERE name = 'ingest.reingest.force_on_same_marc' + ; + + -- 4. Make a harmless update to target_record to trigger auto-update + -- in linked bibliographic records + UPDATE authority.record_entry + SET DELETED = FALSE + WHERE id = source_record; + + -- 5. "Delete" source_record + DELETE FROM authority.record_entry + WHERE id = source_record; + + -- 6. Set "reingest on same MARC" flag back to initial value + UPDATE config.internal_flag + SET enabled = ingest_same + WHERE name = 'ingest.reingest.force_on_same_marc' + ; + + RETURN moved_objects; +END; +$func$ LANGUAGE plpgsql; + +COMMIT;