From 16b9583d2c0c56e93e37da13cfd0b751a037a95b Mon Sep 17 00:00:00 2001 From: Dan Wells Date: Mon, 17 Mar 2014 13:03:49 -0400 Subject: [PATCH] LP#1253163: Make authority functions more truthful One discovery we made on this bug was that PG can break if we conveniently label functions as IMMUTABLE when they are now. Let's go ahead and reclass some authority functions as STABLE STRICT to better fit reality. Signed-off-by: Dan Wells --- Open-ILS/src/sql/Pg/011.schema.authority.sql | 8 ++++---- .../src/sql/Pg/upgrade/XXXX.schema.authority.in-line-headings.sql | 7 ++++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Open-ILS/src/sql/Pg/011.schema.authority.sql b/Open-ILS/src/sql/Pg/011.schema.authority.sql index 0315b2270a..e5bfa31f24 100644 --- a/Open-ILS/src/sql/Pg/011.schema.authority.sql +++ b/Open-ILS/src/sql/Pg/011.schema.authority.sql @@ -297,7 +297,7 @@ BEGIN RETURN heading_text; END; -$func$ LANGUAGE PLPGSQL IMMUTABLE; +$func$ LANGUAGE PLPGSQL STABLE STRICT; CREATE TABLE authority.simple_heading ( id BIGSERIAL PRIMARY KEY, @@ -392,15 +392,15 @@ BEGIN RETURN; END; -$func$ LANGUAGE PLPGSQL IMMUTABLE; +$func$ LANGUAGE PLPGSQL STABLE STRICT; CREATE OR REPLACE FUNCTION authority.simple_normalize_heading( marcxml TEXT ) RETURNS TEXT AS $func$ SELECT authority.normalize_heading($1, TRUE); -$func$ LANGUAGE SQL IMMUTABLE; +$func$ LANGUAGE SQL STABLE STRICT; CREATE OR REPLACE FUNCTION authority.normalize_heading( marcxml TEXT ) RETURNS TEXT AS $func$ SELECT authority.normalize_heading($1, FALSE); -$func$ LANGUAGE SQL IMMUTABLE; +$func$ LANGUAGE SQL STABLE STRICT; COMMENT ON FUNCTION authority.normalize_heading( TEXT ) IS $$ Extract the authority heading, thesaurus, and NACO-normalized values diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.authority.in-line-headings.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.authority.in-line-headings.sql index 47fb7f2c11..64fe5f6e0e 100644 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.authority.in-line-headings.sql +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.authority.in-line-headings.sql @@ -7,7 +7,7 @@ ALTER TABLE authority.record_entry DISABLE TRIGGER map_thesaurus_to_control_set; BEGIN; -SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version); +--SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version); ALTER TABLE authority.record_entry ADD COLUMN heading TEXT, ADD COLUMN simple_heading TEXT; @@ -34,6 +34,11 @@ $f$ LANGUAGE PLPGSQL; CREATE TRIGGER update_headings_tgr BEFORE INSERT OR UPDATE ON authority.record_entry FOR EACH ROW EXECUTE PROCEDURE authority.normalize_heading_for_upsert(); +ALTER FUNCTION authority.normalize_heading(TEXT, BOOL) STABLE STRICT; +ALTER FUNCTION authority.normalize_heading(TEXT) STABLE STRICT; +ALTER FUNCTION authority.simple_normalize_heading(TEXT) STABLE STRICT; +ALTER FUNCTION authority.simple_heading_set(TEXT) STABLE STRICT; + COMMIT; ALTER TABLE authority.record_entry ENABLE TRIGGER a_marcxml_is_well_formed; -- 2.11.0