LP#1253163: Make authority functions more truthful
authorDan Wells <dbw2@calvin.edu>
Mon, 17 Mar 2014 17:03:49 +0000 (13:03 -0400)
committerBen Shum <bshum@biblio.org>
Wed, 19 Mar 2014 02:42:59 +0000 (22:42 -0400)
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 <dbw2@calvin.edu>
Signed-off-by: Ben Shum <bshum@biblio.org>
Open-ILS/src/sql/Pg/011.schema.authority.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.authority.in-line-headings.sql

index 99f21ea..bb4aca0 100644 (file)
@@ -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
index 47fb7f2..64fe5f6 100644 (file)
@@ -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;