$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/(<leader>.........)./${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)