From d388f7019a90a5809514407d7139eb1ed1843432 Mon Sep 17 00:00:00 2001
From: Galen Charlton <gmc@equinoxinitiative.org>
Date: Tue, 26 Sep 2017 16:07:57 -0400
Subject: [PATCH] LP#1719726: adjust computation of bre visibility attribute
 vector

This patch moves the computation of the visiblity attribute vector
on biblio.record_entry to a separate transaction. Credit to Chris Sharp
for ideas on speeding up this part of the upgrade.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
---
 .../2.12.5-3.0-beta1-upgrade-db.sql                | 26 +++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/Open-ILS/src/sql/Pg/version-upgrade/2.12.5-3.0-beta1-upgrade-db.sql b/Open-ILS/src/sql/Pg/version-upgrade/2.12.5-3.0-beta1-upgrade-db.sql
index 97ca7fa5ff..7fc9b51936 100644
--- a/Open-ILS/src/sql/Pg/version-upgrade/2.12.5-3.0-beta1-upgrade-db.sql
+++ b/Open-ILS/src/sql/Pg/version-upgrade/2.12.5-3.0-beta1-upgrade-db.sql
@@ -2564,7 +2564,7 @@ INSERT INTO asset.copy_vis_attr_cache (target_copy, record, vis_attr_vector)
       FROM  asset.copy cp
             JOIN asset.call_number cn ON (cp.call_number = cn.id);
 
-UPDATE biblio.record_entry SET vis_attr_vector = biblio.calculate_bib_visibility_attribute_set(id);
+-- updating vis cache for biblio.record_entry deferred to end
 
 CREATE TRIGGER z_opac_vis_mat_view_tgr BEFORE INSERT OR UPDATE ON biblio.record_entry FOR EACH ROW EXECUTE PROCEDURE asset.cache_copy_visibility();
 CREATE TRIGGER z_opac_vis_mat_view_tgr AFTER INSERT OR DELETE ON biblio.peer_bib_copy_map FOR EACH ROW EXECUTE PROCEDURE asset.cache_copy_visibility();
@@ -7082,6 +7082,30 @@ CREATE TRIGGER c_maintain_control_numbers BEFORE INSERT OR UPDATE ON biblio.reco
 COMMIT;
 
 \echo ---------------------------------------------------------------------
+\echo Updating visibility attribute vector for biblio.record_entry
+BEGIN;
+
+ALTER TABLE biblio.record_entry DISABLE TRIGGER  a_marcxml_is_well_formed;
+ALTER TABLE biblio.record_entry DISABLE TRIGGER  aaa_indexing_ingest_or_delete;
+ALTER TABLE biblio.record_entry DISABLE TRIGGER  audit_biblio_record_entry_update_trigger;
+ALTER TABLE biblio.record_entry DISABLE TRIGGER  b_maintain_901;
+ALTER TABLE biblio.record_entry DISABLE TRIGGER  bbb_simple_rec_trigger;
+ALTER TABLE biblio.record_entry DISABLE TRIGGER  c_maintain_control_numbers;
+ALTER TABLE biblio.record_entry DISABLE TRIGGER  fingerprint_tgr;
+
+UPDATE biblio.record_entry SET vis_attr_vector = biblio.calculate_bib_visibility_attribute_set(id) WHERE NOT DELETED;
+
+ALTER TABLE biblio.record_entry ENABLE TRIGGER  a_marcxml_is_well_formed;
+ALTER TABLE biblio.record_entry ENABLE TRIGGER  aaa_indexing_ingest_or_delete;
+ALTER TABLE biblio.record_entry ENABLE TRIGGER  audit_biblio_record_entry_update_trigger;
+ALTER TABLE biblio.record_entry ENABLE TRIGGER  b_maintain_901;
+ALTER TABLE biblio.record_entry ENABLE TRIGGER  bbb_simple_rec_trigger;
+ALTER TABLE biblio.record_entry ENABLE TRIGGER  c_maintain_control_numbers;
+ALTER TABLE biblio.record_entry ENABLE TRIGGER  fingerprint_tgr;
+
+COMMIT;
+
+\echo ---------------------------------------------------------------------
 \echo Reingest display fields.  This can ban canceled via Ctrl-C and run at
 \echo a later time with the following (or similar) SQL:
 \echo
-- 
2.11.0