egdb3_12_9
.metabib
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
indexing_update(bib biblio.record_entry, insert_only boolean DEFAULT false, extra text DEFAULT NULL::text)
Parameters
Name
Type
Mode
bib
biblio.record_entry
IN
insert_only
boolean
IN
extra
text
IN
Definition
DECLARE skip_facet BOOL := FALSE; skip_display BOOL := FALSE; skip_browse BOOL := FALSE; skip_search BOOL := FALSE; skip_auth BOOL := FALSE; skip_full BOOL := FALSE; skip_attrs BOOL := FALSE; skip_luri BOOL := FALSE; skip_mrmap BOOL := FALSE; only_attrs TEXT[] := NULL; only_fields INT[] := '{}'::INT[]; diag_detail TEXT; diag_context TEXT; BEGIN -- Record authority linking SELECT extra LIKE '%skip_authority%' INTO skip_auth; PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_authority_linking' AND enabled; IF NOT FOUND AND NOT skip_auth THEN PERFORM biblio.map_authority_linking( bib.id, bib.marc ); END IF; -- Flatten and insert the mfr data SELECT extra LIKE '%skip_full_rec%' INTO skip_full; PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_metabib_full_rec' AND enabled; IF NOT FOUND AND NOT skip_full THEN PERFORM metabib.reingest_metabib_full_rec(bib.id); END IF; -- Now we pull out attribute data, which is dependent on the mfr for all but XPath-based fields SELECT extra LIKE '%skip_attrs%' INTO skip_attrs; PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_metabib_rec_descriptor' AND enabled; IF NOT FOUND AND NOT skip_attrs THEN IF extra ~ 'attr\(\s*(\w[ ,\w]*?)\s*\)' THEN SELECT REGEXP_SPLIT_TO_ARRAY( (REGEXP_MATCHES(extra, 'attr\(\s*(\w[ ,\w]*?)\s*\)'))[1], '\s*,\s*' ) INTO only_attrs; END IF; PERFORM metabib.reingest_record_attributes(bib.id, only_attrs, bib.marc, insert_only); END IF; -- Gather and insert the field entry data SELECT extra LIKE '%skip_facet%' INTO skip_facet; SELECT extra LIKE '%skip_display%' INTO skip_display; SELECT extra LIKE '%skip_browse%' INTO skip_browse; SELECT extra LIKE '%skip_search%' INTO skip_search; IF extra ~ 'field_list\(\s*(\d[ ,\d]+)\s*\)' THEN SELECT REGEXP_SPLIT_TO_ARRAY( (REGEXP_MATCHES(extra, 'field_list\(\s*(\d[ ,\d]+)\s*\)'))[1], '\s*,\s*' )::INT[] INTO only_fields; END IF; IF NOT skip_facet OR NOT skip_display OR NOT skip_browse OR NOT skip_search THEN PERFORM metabib.reingest_metabib_field_entries(bib.id, skip_facet, skip_display, skip_browse, skip_search, only_fields); END IF; -- Located URI magic SELECT extra LIKE '%skip_luri%' INTO skip_luri; PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_located_uri' AND enabled; IF NOT FOUND AND NOT skip_luri THEN PERFORM biblio.extract_located_uris( bib.id, bib.marc, bib.editor ); END IF; -- (re)map metarecord-bib linking SELECT extra LIKE '%skip_mrmap%' INTO skip_mrmap; IF insert_only THEN -- if not deleted and performing an insert, check for the flag PERFORM * FROM config.internal_flag WHERE name = 'ingest.metarecord_mapping.skip_on_insert' AND enabled; IF NOT FOUND AND NOT skip_mrmap THEN PERFORM metabib.remap_metarecord_for_bib( bib.id, bib.fingerprint ); END IF; ELSE -- we're doing an update, and we're not deleted, remap PERFORM * FROM config.internal_flag WHERE name = 'ingest.metarecord_mapping.skip_on_update' AND enabled; IF NOT FOUND AND NOT skip_mrmap THEN PERFORM metabib.remap_metarecord_for_bib( bib.id, bib.fingerprint ); END IF; END IF; RETURN TRUE; EXCEPTION WHEN OTHERS THEN GET STACKED DIAGNOSTICS diag_detail = PG_EXCEPTION_DETAIL, diag_context = PG_EXCEPTION_CONTEXT; RAISE WARNING '%\n%', diag_detail, diag_context; RETURN FALSE; END;