3 --- SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
5 CREATE OR REPLACE FUNCTION biblio.extract_fingerprint ( marc text ) RETURNS TEXT AS $func$
7 idx config.biblio_fingerprint%ROWTYPE;
8 xfrm config.xml_transform%ROWTYPE;
14 output_text TEXT := '';
17 IF marc IS NULL OR marc = '' THEN
21 -- Loop over the indexing entries
22 FOR idx IN SELECT * FROM config.biblio_fingerprint ORDER BY format, id LOOP
24 SELECT INTO xfrm * from config.xml_transform WHERE name = idx.format;
26 -- See if we can skip the XSLT ... it's expensive
27 IF prev_xfrm IS NULL OR prev_xfrm <> xfrm.name THEN
28 -- Can't skip the transform
29 IF xfrm.xslt <> '---' THEN
30 transformed_xml := oils_xslt_process(marc,xfrm.xslt);
32 transformed_xml := marc;
35 prev_xfrm := xfrm.name;
46 ARRAY[ARRAY[xfrm.prefix, xfrm.namespace_uri]]
55 raw_text := REGEXP_REPLACE(raw_text, E'\\[.+?\\]', E'');
56 raw_text := REGEXP_REPLACE(raw_text, E'\\mthe\\M|\\man?d?d\\M', E'', 'g'); -- arg! the pain!
58 IF idx.first_word IS TRUE THEN
59 raw_text := REGEXP_REPLACE(raw_text, E'^(\\w+).*?$', E'\\1');
62 output_text := output_text || idx.name || ':' ||
63 REGEXP_REPLACE(raw_text, E'\\s+', '', 'g') || ' ';
67 RETURN BTRIM(output_text);
70 $func$ LANGUAGE PLPGSQL;
74 \qecho Recalculating bib fingerprints
75 ALTER TABLE biblio.record_entry DISABLE TRIGGER USER;
76 UPDATE biblio.record_entry SET fingerprint = biblio.extract_fingerprint(marc) WHERE NOT deleted;
77 ALTER TABLE biblio.record_entry ENABLE TRIGGER USER;
79 SELECT metabib.remap_metarecord_for_bib(id, fingerprint)
80 FROM biblio.record_entry
83 \qecho Remapping metarecords
84 SELECT metabib.remap_metarecord_for_bib(id, fingerprint)
85 FROM biblio.record_entry