]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/000.functions.general.sql
Stamped upgrade script for "lp 823496: do not fail to index personal names that have...
[Evergreen.git] / Open-ILS / src / sql / Pg / 000.functions.general.sql
1 -- Rather than polluting the public schema with general Evergreen
2 -- functions, carve out a dedicated schema
3
4 DROP SCHEMA IF EXISTS evergreen CASCADE;
5
6 BEGIN;
7
8 CREATE SCHEMA evergreen;
9
10 CREATE OR REPLACE FUNCTION evergreen.change_db_setting(setting_name TEXT, settings TEXT[]) RETURNS VOID AS $$
11 BEGIN
12     EXECUTE 'ALTER DATABASE ' || quote_ident(current_database()) || ' SET ' || quote_ident(setting_name) || ' = ' || array_to_string(settings, ',');
13 END;
14 $$ LANGUAGE plpgsql;
15
16 SELECT evergreen.change_db_setting('search_path', ARRAY['evergreen','public','pg_catalog']);
17
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;
19
20 CREATE OR REPLACE FUNCTION evergreen.lowercase( TEXT ) RETURNS TEXT AS $$
21     return lc(shift);
22 $$ LANGUAGE PLPERLU STRICT IMMUTABLE;
23
24 CREATE OR REPLACE FUNCTION evergreen.xml_escape(str TEXT) RETURNS text AS $$
25     SELECT REPLACE(REPLACE(REPLACE($1,
26        '&', '&amp;'),
27        '<', '&lt;'),
28        '>', '&gt;');
29 $$ LANGUAGE SQL IMMUTABLE;
30
31 -- Provide a named type for patching functions
32 CREATE TYPE evergreen.patch AS (patch TEXT);
33
34 COMMIT;