From f48a41b861100e2d5e1d4669b7c4d540530fe284 Mon Sep 17 00:00:00 2001
From: dbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Date: Sat, 12 Mar 2011 23:37:45 +0000
Subject: [PATCH] Clean up build errors when creating/recreating database
 schema

Dropping the evergreen schema cascaded and wiped out some previously
defined functions, so move it ahead of the other functions. (And maybe
we can start moving those public functions into the evergreen schema?)

DROP AGGREGATE IF EXISTS exists on any version of PostgreSQL that we
care about for Evergreen 2.0, so we can use it to avoid false errors
during schema creation.

FTS config was complaining about public.english_nostop in the ALTER
statement, so remove the schema qualification. This seems to have
been there for a long time?

Use IF EXISTS when dropping the unapi schema to avoid an error.


git-svn-id: svn://svn.open-ils.org/ILS/trunk@19723 dcc99617-32d9-48b4-a31d-7c20da2025e4
---
 Open-ILS/src/sql/Pg/000.english.pg84.fts-config.sql |  2 +-
 Open-ILS/src/sql/Pg/000.english.pg90.fts-config.sql |  2 +-
 Open-ILS/src/sql/Pg/002.functions.aggregate.sql     | 14 ++++++--------
 Open-ILS/src/sql/Pg/002.functions.general.sql       |  7 +++++++
 Open-ILS/src/sql/Pg/990.schema.unapi.sql            |  2 +-
 Open-ILS/src/sql/Pg/build-db.sh                     |  2 +-
 6 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/Open-ILS/src/sql/Pg/000.english.pg84.fts-config.sql b/Open-ILS/src/sql/Pg/000.english.pg84.fts-config.sql
index b0b1157512..e4e50e4a31 100644
--- a/Open-ILS/src/sql/Pg/000.english.pg84.fts-config.sql
+++ b/Open-ILS/src/sql/Pg/000.english.pg84.fts-config.sql
@@ -32,7 +32,7 @@ COMMENT ON TEXT SEARCH DICTIONARY english_nostop IS 'English snowball stemmer wi
 
 CREATE TEXT SEARCH CONFIGURATION title ( COPY = pg_catalog.english );
 ALTER TEXT SEARCH CONFIGURATION title ALTER MAPPING FOR word, hword, hword_part WITH pg_catalog.simple;
-ALTER TEXT SEARCH CONFIGURATION title ALTER MAPPING FOR asciiword, asciihword, hword_asciipart WITH public.english_nostop;
+ALTER TEXT SEARCH CONFIGURATION title ALTER MAPPING FOR asciiword, asciihword, hword_asciipart WITH english_nostop;
 CREATE TEXT SEARCH CONFIGURATION author ( COPY = title );
 CREATE TEXT SEARCH CONFIGURATION subject ( COPY = title );
 CREATE TEXT SEARCH CONFIGURATION keyword ( COPY = title );
diff --git a/Open-ILS/src/sql/Pg/000.english.pg90.fts-config.sql b/Open-ILS/src/sql/Pg/000.english.pg90.fts-config.sql
index b0b1157512..e4e50e4a31 100644
--- a/Open-ILS/src/sql/Pg/000.english.pg90.fts-config.sql
+++ b/Open-ILS/src/sql/Pg/000.english.pg90.fts-config.sql
@@ -32,7 +32,7 @@ COMMENT ON TEXT SEARCH DICTIONARY english_nostop IS 'English snowball stemmer wi
 
 CREATE TEXT SEARCH CONFIGURATION title ( COPY = pg_catalog.english );
 ALTER TEXT SEARCH CONFIGURATION title ALTER MAPPING FOR word, hword, hword_part WITH pg_catalog.simple;
-ALTER TEXT SEARCH CONFIGURATION title ALTER MAPPING FOR asciiword, asciihword, hword_asciipart WITH public.english_nostop;
+ALTER TEXT SEARCH CONFIGURATION title ALTER MAPPING FOR asciiword, asciihword, hword_asciipart WITH english_nostop;
 CREATE TEXT SEARCH CONFIGURATION author ( COPY = title );
 CREATE TEXT SEARCH CONFIGURATION subject ( COPY = title );
 CREATE TEXT SEARCH CONFIGURATION keyword ( COPY = title );
diff --git a/Open-ILS/src/sql/Pg/002.functions.aggregate.sql b/Open-ILS/src/sql/Pg/002.functions.aggregate.sql
index 70dc588b13..fb0c31129d 100644
--- a/Open-ILS/src/sql/Pg/002.functions.aggregate.sql
+++ b/Open-ILS/src/sql/Pg/002.functions.aggregate.sql
@@ -15,16 +15,14 @@
  *
  */
 
--- Allow these to fail gracelessly outside the transaction
--- because PostgreSQL 8.1 does not support IF EXISTS
-DROP AGGREGATE array_accum(anyelement) CASCADE;
-DROP AGGREGATE public.first(anyelement) CASCADE;
-DROP AGGREGATE public.last(anyelement) CASCADE;
-DROP AGGREGATE public.agg_text(text) CASCADE;
-DROP AGGREGATE public.agg_tsvector(tsvector) CASCADE;
-
 BEGIN;
 
+DROP AGGREGATE IF EXISTS array_accum(anyelement) CASCADE;
+DROP AGGREGATE IF EXISTS public.first(anyelement) CASCADE;
+DROP AGGREGATE IF EXISTS public.last(anyelement) CASCADE;
+DROP AGGREGATE IF EXISTS public.agg_text(text) CASCADE;
+DROP AGGREGATE IF EXISTS public.agg_tsvector(tsvector) CASCADE;
+
 CREATE AGGREGATE array_accum (
 	sfunc = array_append,
 	basetype = anyelement,
diff --git a/Open-ILS/src/sql/Pg/002.functions.general.sql b/Open-ILS/src/sql/Pg/002.functions.general.sql
index 659adcc54c..f9407a5961 100644
--- a/Open-ILS/src/sql/Pg/002.functions.general.sql
+++ b/Open-ILS/src/sql/Pg/002.functions.general.sql
@@ -1,7 +1,14 @@
 -- Rather than polluting the public schema with general Evergreen
 -- functions, carve out a dedicated schema
+
+DROP SCHEMA IF EXISTS evergreen CASCADE;
+
+BEGIN;
+
 CREATE SCHEMA evergreen;
 
 CREATE OR REPLACE FUNCTION evergreen.lowercase( TEXT ) RETURNS TEXT AS $$
     return lc(shift);
 $$ LANGUAGE PLPERLU STRICT IMMUTABLE;
+
+COMMIT;
diff --git a/Open-ILS/src/sql/Pg/990.schema.unapi.sql b/Open-ILS/src/sql/Pg/990.schema.unapi.sql
index a189c57c7e..e7abed50b0 100644
--- a/Open-ILS/src/sql/Pg/990.schema.unapi.sql
+++ b/Open-ILS/src/sql/Pg/990.schema.unapi.sql
@@ -1,4 +1,4 @@
-DROP SCHEMA unapi CASCADE;
+DROP SCHEMA IF EXISTS unapi CASCADE;
 
 BEGIN;
 CREATE SCHEMA unapi;
diff --git a/Open-ILS/src/sql/Pg/build-db.sh b/Open-ILS/src/sql/Pg/build-db.sh
index bc988d7099..0e8f6f8745 100755
--- a/Open-ILS/src/sql/Pg/build-db.sh
+++ b/Open-ILS/src/sql/Pg/build-db.sh
@@ -83,10 +83,10 @@ ordered_file_list="
 
   001.schema.offline.sql
 
+  002.functions.general.sql
   002.schema.config.sql
   002.functions.aggregate.sql
   002.functions.config.sql
-  002.functions.general.sql
 
   005.schema.actors.sql
   006.schema.permissions.sql
-- 
2.11.0