From 3f0411f5968a17bfe87ad4203f6d8760e9cd68fd 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 Signed-off-by: Ben Shum --- Open-ILS/src/sql/Pg/011.schema.authority.sql | 8 ++++---- .../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 99f21ea8a1..bb4aca04d9 100644 --- a/Open-ILS/src/sql/Pg/011.schema.authority.sql +++ b/Open-ILS/src/sql/Pg/011.schema.authority.sql @@ -299,7 +299,7 @@ BEGIN RETURN heading_text; END; -$func$ LANGUAGE PLPGSQL IMMUTABLE; +$func$ LANGUAGE PLPGSQL STABLE STRICT; CREATE TABLE authority.simple_heading ( id BIGSERIAL PRIMARY KEY, @@ -394,15 +394,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.43.2