3 INSERT INTO config.upgrade_log (version) VALUES ('0318'); --miker
5 INSERT INTO config.internal_flag (name) VALUES ('ingest.disable_authority_linking');
7 CREATE TABLE authority.bib_linking (
8 id BIGSERIAL PRIMARY KEY,
9 bib BIGINT NOT NULL REFERENCES biblio.record_entry (id),
10 authority BIGINT NOT NULL REFERENCES authority.record_entry (id)
12 CREATE INDEX authority_bl_bib_idx ON authority.bib_linking ( bib );
13 CREATE UNIQUE INDEX authority_bl_bib_authority_once_idx ON authority.bib_linking ( authority, bib );
15 CREATE OR REPLACE FUNCTION biblio.map_authority_linking (bibid BIGINT, marc TEXT) RETURNS BIGINT AS $func$
16 DELETE FROM authority.bib_linking WHERE bib = $1;
17 INSERT INTO authority.bib_linking (bib, authority)
20 FROM ( SELECT DISTINCT $1 AS bib,
21 BTRIM(remove_paren_substring(x))::BIGINT AS authority
22 FROM explode_array(oils_xpath('//*[@code="0"]/text()',$2)) x
23 ) y JOIN authority.record_entry r ON r.id = y.authority;
27 -- AFTER UPDATE OR INSERT trigger for biblio.record_entry
28 CREATE OR REPLACE FUNCTION biblio.indexing_ingest_or_delete () RETURNS TRIGGER AS $func$
31 IF NEW.deleted IS TRUE THEN -- If this bib is deleted
32 DELETE FROM metabib.metarecord_source_map WHERE source = NEW.id; -- Rid ourselves of the search-estimate-killing linkage
33 RETURN NEW; -- and we're done
36 IF TG_OP = 'UPDATE' THEN -- re-ingest?
37 PERFORM * FROM config.internal_flag WHERE name = 'ingest.reingest.force_on_same_marc' AND enabled;
39 IF NOT FOUND AND OLD.marc = NEW.marc THEN -- don't do anything if the MARC didn't change
46 -- Record authority linking
47 PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_authority_linking' AND enabled;
49 PERFORM biblio.map_authority_linking( NEW.id, NEW.marc );
52 -- Flatten and insert the mfr data
53 PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_metabib_full_rec' AND enabled;
55 PERFORM metabib.reingest_metabib_full_rec(NEW.id);
56 PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_metabib_rec_descriptor' AND enabled;
58 PERFORM metabib.reingest_metabib_rec_descriptor(NEW.id);
62 -- Gather and insert the field entry data
63 PERFORM metabib.reingest_metabib_field_entries(NEW.id);
66 IF TG_OP = 'INSERT' THEN
67 PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_located_uri' AND enabled;
69 PERFORM biblio.extract_located_uris( NEW.id, NEW.marc, NEW.editor );
72 PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_located_uri' AND enabled;
74 PERFORM biblio.extract_located_uris( NEW.id, NEW.marc, NEW.editor );
78 -- (re)map metarecord-bib linking
79 IF TG_OP = 'INSERT' THEN -- if not deleted and performing an insert, check for the flag
80 PERFORM * FROM config.internal_flag WHERE name = 'ingest.metarecord_mapping.skip_on_insert' AND enabled;
82 PERFORM metabib.remap_metarecord_for_bib( NEW.id, NEW.fingerprint );
84 ELSE -- we're doing an update, and we're not deleted, remap
85 PERFORM metabib.remap_metarecord_for_bib( NEW.id, NEW.fingerprint );
90 $func$ LANGUAGE PLPGSQL;