From: Bill Erickson Date: Thu, 23 May 2019 15:06:09 +0000 (+0000) Subject: JBAS-2285 authority browse sql rearrangments X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=c44141317bc8626dc246b4eb8348d8c680473e26;p=working%2FEvergreen.git JBAS-2285 authority browse sql rearrangments Signed-off-by: Bill Erickson --- diff --git a/KCLS/sql/schema/deploy/2.12-3.2-db-upgrade-data.sql b/KCLS/sql/schema/deploy/2.12-3.2-db-upgrade-data.sql index 32f40f04b5..ceceb505f2 100644 --- a/KCLS/sql/schema/deploy/2.12-3.2-db-upgrade-data.sql +++ b/KCLS/sql/schema/deploy/2.12-3.2-db-upgrade-data.sql @@ -73,51 +73,3 @@ UPDATE asset.copy SET alert_message = NULL WHERE alert_message IS NOT NULL; */ - -/* -SELECT CLOCK_TIMESTAMP(), 'Reingesting authority records'; - --- add the flag ingest.disable_authority_full_rec if it does not exist -INSERT INTO config.internal_flag (name, enabled) -SELECT 'ingest.disable_authority_full_rec', FALSE -WHERE NOT EXISTS (SELECT 1 FROM config.internal_flag -WHERE name = 'ingest.disable_authority_full_rec'); - -CREATE TEMPORARY TABLE internal_flag_state AS - SELECT name, enabled - FROM config.internal_flag - WHERE name in ( - 'ingest.reingest.force_on_same_marc', - 'ingest.disable_authority_auto_update', - 'ingest.disable_authority_full_rec' - ); - -UPDATE config.internal_flag -SET enabled = TRUE -WHERE name in ( - 'ingest.reingest.force_on_same_marc', - 'ingest.disable_authority_auto_update', - 'ingest.disable_authority_full_rec' -); - -ALTER TABLE authority.record_entry DISABLE TRIGGER a_marcxml_is_well_formed; -ALTER TABLE authority.record_entry DISABLE TRIGGER b_maintain_901; -ALTER TABLE authority.record_entry DISABLE TRIGGER c_maintain_control_numbers; -ALTER TABLE authority.record_entry DISABLE TRIGGER map_thesaurus_to_control_set; - -UPDATE authority.record_entry SET id = id WHERE NOT DELETED; - -ALTER TABLE authority.record_entry ENABLE TRIGGER a_marcxml_is_well_formed; -ALTER TABLE authority.record_entry ENABLE TRIGGER b_maintain_901; -ALTER TABLE authority.record_entry ENABLE TRIGGER c_maintain_control_numbers; -ALTER TABLE authority.record_entry ENABLE TRIGGER map_thesaurus_to_control_set; - --- and restore -UPDATE config.internal_flag a -SET enabled = b.enabled -FROM internal_flag_state b -WHERE a.name = b.name; - -SELECT CLOCK_TIMESTAMP(), 'Done reingesting authority records'; -*/ - diff --git a/KCLS/sql/schema/deploy/2.12-3.2-db-upgrade-schema.sql b/KCLS/sql/schema/deploy/2.12-3.2-db-upgrade-schema.sql index ce65b11daa..f375bed20d 100644 --- a/KCLS/sql/schema/deploy/2.12-3.2-db-upgrade-schema.sql +++ b/KCLS/sql/schema/deploy/2.12-3.2-db-upgrade-schema.sql @@ -21772,6 +21772,34 @@ DROP TRIGGER reservation_transit_copy_is_unique_check ON action.reservation_tran DROP INDEX action.active_transit_for_copy; */ + +CREATE OR REPLACE FUNCTION metabib.browse_pivot( + search_field INT[], browse_term TEXT +) RETURNS BIGINT AS $p$ +-- handles 'search_field' conflict. using this means I don't +-- have to drop/recreate the function and those that rely on it +-- just to change the 'search_field' param name. +#variable_conflict use_variable +DECLARE + sort_value TEXT; +BEGIN + SELECT INTO sort_value + CASE WHEN cmf.field_class = 'identifier' THEN + public.naco_normalize_keep_decimal($2, '') + ELSE + public.naco_normalize($2) + END + FROM config.metabib_field cmf + WHERE cmf.id = search_field[1]; + + RETURN mbe.id FROM metabib.browse_entry mbe + WHERE mbe.metabib_fields_cache && $1 + AND mbe.truncated_sort_value >= sort_value + ORDER BY mbe.sort_value LIMIT 1; +END; +$p$ LANGUAGE PLPGSQL STABLE; + + ---------------------------------------------------------------------------- -- VERSION INSERTS ---------------------------------------------------------------------------- diff --git a/KCLS/sql/schema/deploy/3.2-additions.sql b/KCLS/sql/schema/deploy/3.2-additions.sql index 6756ec07ae..c4f8e18209 100644 --- a/KCLS/sql/schema/deploy/3.2-additions.sql +++ b/KCLS/sql/schema/deploy/3.2-additions.sql @@ -3,33 +3,6 @@ BEGIN; -CREATE OR REPLACE FUNCTION metabib.browse_pivot( - search_field INT[], browse_term TEXT -) RETURNS BIGINT AS $p$ --- handles 'search_field' conflict. using this means I don't --- have to drop/recreate the function and those that rely on it --- just to change the 'search_field' param name. -#variable_conflict use_variable -DECLARE - sort_value TEXT; -BEGIN - SELECT INTO sort_value - CASE WHEN cmf.field_class = 'identifier' THEN - public.naco_normalize_keep_decimal($2, '') - ELSE - public.naco_normalize($2) - END - FROM config.metabib_field cmf - WHERE cmf.id = search_field[1]; - - RETURN mbe.id FROM metabib.browse_entry mbe - WHERE mbe.metabib_fields_cache && $1 - AND mbe.truncated_sort_value >= sort_value - ORDER BY mbe.sort_value LIMIT 1; -END; -$p$ LANGUAGE PLPGSQL STABLE; - - DO $INSERT$ BEGIN IF evergreen.insert_on_deploy() THEN @@ -237,3 +210,51 @@ SELECT reporter.enable_materialized_simple_record_trigger(); SELECT CLOCK_TIMESTAMP(), 'Done rebuilding reporter.materialized_simple_record...'; */ + +BEGIN; +SELECT CLOCK_TIMESTAMP(), 'Reingesting authority records'; + +-- add the flag ingest.disable_authority_full_rec if it does not exist +INSERT INTO config.internal_flag (name, enabled) +SELECT 'ingest.disable_authority_full_rec', FALSE +WHERE NOT EXISTS (SELECT 1 FROM config.internal_flag +WHERE name = 'ingest.disable_authority_full_rec'); + +CREATE TEMPORARY TABLE internal_flag_state AS + SELECT name, enabled + FROM config.internal_flag + WHERE name in ( + 'ingest.reingest.force_on_same_marc', + 'ingest.disable_authority_auto_update', + 'ingest.disable_authority_full_rec' + ); + +UPDATE config.internal_flag +SET enabled = TRUE +WHERE name in ( + 'ingest.reingest.force_on_same_marc', + 'ingest.disable_authority_auto_update', + 'ingest.disable_authority_full_rec' +); + +ALTER TABLE authority.record_entry DISABLE TRIGGER a_marcxml_is_well_formed; +ALTER TABLE authority.record_entry DISABLE TRIGGER b_maintain_901; +ALTER TABLE authority.record_entry DISABLE TRIGGER c_maintain_control_numbers; +ALTER TABLE authority.record_entry DISABLE TRIGGER map_thesaurus_to_control_set; + +UPDATE authority.record_entry SET id = id WHERE NOT DELETED; + +ALTER TABLE authority.record_entry ENABLE TRIGGER a_marcxml_is_well_formed; +ALTER TABLE authority.record_entry ENABLE TRIGGER b_maintain_901; +ALTER TABLE authority.record_entry ENABLE TRIGGER c_maintain_control_numbers; +ALTER TABLE authority.record_entry ENABLE TRIGGER map_thesaurus_to_control_set; + +-- and restore +UPDATE config.internal_flag a +SET enabled = b.enabled +FROM internal_flag_state b +WHERE a.name = b.name; + +SELECT CLOCK_TIMESTAMP(), 'Done reingesting authority records'; +COMMIT; +