From: Rogan Hamby Date: Tue, 26 Feb 2019 11:45:12 +0000 (-0500) Subject: removing the add_sf9 function that doesn't check for indicators or reset them X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=commitdiff_plain;h=2492427d9f638dbcee43b5dbf11d0911dbad4acb removing the add_sf9 function that doesn't check for indicators or reset them --- diff --git a/sql/base/base.sql b/sql/base/base.sql index 603cffe..510fb2a 100644 --- a/sql/base/base.sql +++ b/sql/base/base.sql @@ -4277,83 +4277,6 @@ return $marc_xml->as_xml_record(); $function$; --- alternate adding subfield 9 function in that it adds them to existing tags where the 856$u matches a correct value only -DROP FUNCTION IF EXISTS migration_tools.add_sf9(TEXT,TEXT,TEXT); -CREATE OR REPLACE FUNCTION migration_tools.add_sf9(marc TEXT, partial_u TEXT, new_9 TEXT) - RETURNS TEXT - LANGUAGE plperlu -AS $function$ -use strict; -use warnings; - -use MARC::Record; -use MARC::File::XML (BinaryEncoding => 'utf8'); - -binmode(STDERR, ':bytes'); -binmode(STDOUT, ':utf8'); -binmode(STDERR, ':utf8'); - -my $marc_xml = shift; -my $matching_u_text = shift; -my $new_9_to_set = shift; - -$marc_xml =~ s/(.........)./${1}a/; - -eval { - $marc_xml = MARC::Record->new_from_xml($marc_xml); -}; -if ($@) { - #elog("could not parse $bibid: $@\n"); - import MARC::File::XML (BinaryEncoding => 'utf8'); - return; -} - -my @uris = $marc_xml->field('856'); -return unless @uris; - -foreach my $field (@uris) { - my $sfu = $field->subfield('u'); - my $ind2 = $field->indicator('2'); - if (!defined $ind2) { next; } - if ($ind2 ne '0') { next; } - if (!defined $sfu) { next; } - if ($sfu =~ m/$matching_u_text/ or $matching_u_text eq 'pineapple') { - $field->add_subfields( '9' => $new_9_to_set ); - last; - } -} - -return $marc_xml->as_xml_record(); - -$function$; - -DROP FUNCTION IF EXISTS migration_tools.add_sf9(BIGINT, TEXT, TEXT, REGCLASS); -CREATE OR REPLACE FUNCTION migration_tools.add_sf9(bib_id BIGINT, target_u_text TEXT, sf9_text TEXT, bib_table REGCLASS) - RETURNS BOOLEAN AS -$BODY$ -DECLARE - source_xml TEXT; - new_xml TEXT; - r BOOLEAN; -BEGIN - - EXECUTE 'SELECT marc FROM ' || bib_table || ' WHERE id = ' || bib_id INTO source_xml; - - SELECT migration_tools.add_sf9(source_xml, target_u_text, sf9_text) INTO new_xml; - - r = FALSE; - new_xml = '$_$' || new_xml || '$_$'; - - IF new_xml != source_xml THEN - EXECUTE 'UPDATE ' || bib_table || ' SET marc = ' || new_xml || ' WHERE id = ' || bib_id; - r = TRUE; - END IF; - - RETURN r; - -END; -$BODY$ LANGUAGE plpgsql; - -- strip marc tag DROP FUNCTION IF EXISTS migration_tools.strip_tag(TEXT,TEXT); CREATE OR REPLACE FUNCTION migration_tools.strip_tag(marc TEXT, tag TEXT)