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.change_db_setting(setting_name TEXT, settings TEXT[]) RETURNS VOID AS $$
12 EXECUTE 'ALTER DATABASE ' || quote_ident(current_database()) || ' SET ' || quote_ident(setting_name) || ' = ' || array_to_string(settings, ',');
16 SELECT evergreen.change_db_setting('search_path', ARRAY['evergreen','public','pg_catalog']);
18 CREATE OR REPLACE FUNCTION evergreen.array_remove_item_by_value(inp ANYARRAY, el ANYELEMENT) RETURNS anyarray AS $$ SELECT ARRAY_ACCUM(x.e) FROM UNNEST( $1 ) x(e) WHERE x.e <> $2; $$ LANGUAGE SQL;
20 CREATE OR REPLACE FUNCTION evergreen.lowercase( TEXT ) RETURNS TEXT AS $$
22 $$ LANGUAGE PLPERLU STRICT IMMUTABLE;
24 CREATE OR REPLACE FUNCTION evergreen.xml_escape(str TEXT) RETURNS text AS $$
25 SELECT REPLACE(REPLACE(REPLACE($1,
29 $$ LANGUAGE SQL IMMUTABLE;
31 CREATE OR REPLACE FUNCTION evergreen.regexp_split_to_array(TEXT, TEXT)
33 return encode_array_literal([split $_[1], $_[0]]);
34 $$ LANGUAGE PLPERLU STRICT IMMUTABLE;
36 -- Provide a named type for patching functions
37 CREATE TYPE evergreen.patch AS (patch TEXT);