1 -- Rather than polluting the public schema with general Evergreen
2 -- functions, carve out a dedicated schema
4 DROP SCHEMA IF EXISTS evergreen CASCADE;
8 CREATE SCHEMA evergreen;
10 CREATE OR REPLACE FUNCTION evergreen.lowercase( TEXT ) RETURNS TEXT AS $$
12 $$ LANGUAGE PLPERLU STRICT IMMUTABLE;
14 CREATE OR REPLACE FUNCTION evergreen.xml_escape(str TEXT) RETURNS text AS $$
15 SELECT REPLACE(REPLACE(REPLACE($1,
19 $$ LANGUAGE SQL IMMUTABLE;
21 CREATE OR REPLACE FUNCTION evergreen.change_db_setting(setting_name TEXT, settings TEXT[]) RETURNS VOID AS $$
23 EXECUTE 'ALTER DATABASE ' || quote_ident(current_database()) || ' SET ' || quote_ident(setting_name) || ' = ' || array_to_string(settings, ',');
27 CREATE OR REPLACE FUNCTION evergreen.fake_fkey_tgr () RETURNS TRIGGER AS $F$
31 EXECUTE 'SELECT ($1).' || quote_ident(TG_ARGV[0]) INTO copy_id USING NEW;
32 PERFORM * FROM asset.copy WHERE id = copy_id;
34 RAISE EXCEPTION 'Key (%.%=%) does not exist in asset.copy', TG_TABLE_SCHEMA, TG_TABLE_NAME, copy_id;
40 SELECT evergreen.change_db_setting('search_path', ARRAY['evergreen','public','pg_catalog']);