[open-ils-commits] r18557 - in trunk/Open-ILS/src/sql/Pg: . upgrade (dbs)
svn at svn.open-ils.org
svn at svn.open-ils.org
Mon Nov 1 15:44:21 EDT 2010
Author: dbs
Date: 2010-11-01 15:44:16 -0400 (Mon, 01 Nov 2010)
New Revision: 18557
Added:
trunk/Open-ILS/src/sql/Pg/upgrade/0452.schema.authority.propagate_changes.sql
Modified:
trunk/Open-ILS/src/sql/Pg/002.schema.config.sql
trunk/Open-ILS/src/sql/Pg/999.functions.global.sql
Log:
Ensure that changes to authority records propagate to linked bibliographic records
Per https://bugs.launchpad.net/evergreen/+bug/669596, updated authority records
weren't being reflected in bibliographic records with fields that link to those
authority records. We were missing the call to authority.propaagate_changes()
withing the ingest trigger on authority.record_entry.
Modified: trunk/Open-ILS/src/sql/Pg/002.schema.config.sql
===================================================================
--- trunk/Open-ILS/src/sql/Pg/002.schema.config.sql 2010-11-01 18:38:34 UTC (rev 18556)
+++ trunk/Open-ILS/src/sql/Pg/002.schema.config.sql 2010-11-01 19:44:16 UTC (rev 18557)
@@ -70,7 +70,7 @@
install_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
-INSERT INTO config.upgrade_log (version) VALUES ('0451'); -- miker
+INSERT INTO config.upgrade_log (version) VALUES ('0452'); -- dbs
CREATE TABLE config.bib_source (
id SERIAL PRIMARY KEY,
Modified: trunk/Open-ILS/src/sql/Pg/999.functions.global.sql
===================================================================
--- trunk/Open-ILS/src/sql/Pg/999.functions.global.sql 2010-11-01 18:38:34 UTC (rev 18556)
+++ trunk/Open-ILS/src/sql/Pg/999.functions.global.sql 2010-11-01 19:44:16 UTC (rev 18557)
@@ -1430,6 +1430,8 @@
IF NOT FOUND AND OLD.marc = NEW.marc THEN -- don't do anything if the MARC didn't change
RETURN NEW;
END IF;
+ -- Propagate these updates to any linked bib records
+ PERFORM authority.propagate_changes(NEW.id) FROM authority.record_entry WHERE id = NEW.id;
END IF;
-- Flatten and insert the afr data
Added: trunk/Open-ILS/src/sql/Pg/upgrade/0452.schema.authority.propagate_changes.sql
===================================================================
--- trunk/Open-ILS/src/sql/Pg/upgrade/0452.schema.authority.propagate_changes.sql (rev 0)
+++ trunk/Open-ILS/src/sql/Pg/upgrade/0452.schema.authority.propagate_changes.sql 2010-11-01 19:44:16 UTC (rev 18557)
@@ -0,0 +1,41 @@
+BEGIN;
+
+INSERT INTO config.upgrade_log (version) VALUES ('0452'); -- dbs
+
+-- AFTER UPDATE OR INSERT trigger for authority.record_entry
+CREATE OR REPLACE FUNCTION authority.indexing_ingest_or_delete () RETURNS TRIGGER AS $func$
+BEGIN
+
+ IF NEW.deleted IS TRUE THEN -- If this authority is deleted
+ DELETE FROM authority.bib_linking WHERE authority = NEW.id; -- Avoid updating fields in bibs that are no longer visible
+ DELETE FROM authority.full_rec WHERE record = NEW.id; -- Avoid validating fields against deleted authority records
+ -- Should remove matching $0 from controlled fields at the same time?
+ RETURN NEW; -- and we're done
+ END IF;
+
+ IF TG_OP = 'UPDATE' THEN -- re-ingest?
+ PERFORM * FROM config.internal_flag WHERE name = 'ingest.reingest.force_on_same_marc' AND enabled;
+
+ IF NOT FOUND AND OLD.marc = NEW.marc THEN -- don't do anything if the MARC didn't change
+ RETURN NEW;
+ END IF;
+ -- Propagate these updates to any linked bib records
+ PERFORM authority.propagate_changes(NEW.id) FROM authority.record_entry WHERE id = NEW.id;
+ END IF;
+
+ -- Flatten and insert the afr data
+ PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_authority_full_rec' AND enabled;
+ IF NOT FOUND THEN
+ PERFORM authority.reingest_authority_full_rec(NEW.id);
+-- authority.rec_descriptor is not currently used
+-- PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_authority_rec_descriptor' AND enabled;
+-- IF NOT FOUND THEN
+-- PERFORM authority.reingest_authority_rec_descriptor(NEW.id);
+-- END IF;
+ END IF;
+
+ RETURN NEW;
+END;
+$func$ LANGUAGE PLPGSQL;
+
+COMMIT;
More information about the open-ils-commits
mailing list