3 SELECT evergreen.upgrade_deps_block_check('0880', :eg_version);
5 CREATE OR REPLACE FUNCTION authority.calculate_authority_linking(
6 rec_id BIGINT, rec_control_set INT, rec_marc_xml XML
7 ) RETURNS SETOF authority.authority_linking AS $func$
9 acsaf authority.control_set_authority_field%ROWTYPE;
11 aal authority.authority_linking%ROWTYPE;
13 IF rec_control_set IS NULL THEN
14 -- No control_set on record? Guess at one
15 SELECT control_set INTO rec_control_set
16 FROM authority.control_set_authority_field
19 XPATH('//*[starts-with(@tag,"1")]/@tag',rec_marc_xml)::TEXT[]
24 RAISE WARNING 'Could not even guess at control set for authority record %', rec_id;
32 SELECT * FROM authority.control_set_authority_field
33 WHERE control_set = rec_control_set
34 AND linking_subfield IS NOT NULL
35 AND main_entry IS NOT NULL
37 -- Loop over the trailing-number contents of all linking subfields
39 SELECT SUBSTRING( x::TEXT, '\d+$' )
45 || acsaf.linking_subfield
52 -- Ignore links that are null, malformed, circular, or point to
53 -- non-existent authority records.
54 IF link IS NOT NULL AND link::BIGINT <> rec_id THEN
55 PERFORM * FROM authority.record_entry WHERE id = link::BIGINT;
57 aal.target := link::BIGINT;
58 aal.field := acsaf.id;
65 $func$ LANGUAGE PLPGSQL;