]> granicus.if.org Git - postgis/commitdiff
revise upgrade script to take into consideration change in casts
authorRegina Obe <lr@pcorp.us>
Mon, 19 Dec 2011 04:48:07 +0000 (04:48 +0000)
committerRegina Obe <lr@pcorp.us>
Mon, 19 Dec 2011 04:48:07 +0000 (04:48 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@8463 b70326c6-7e19-0410-871a-916f4a2858ee

raster/rt_pg/Makefile.in
raster/rt_pg/rtpostgis_drop.sql.in.c
raster/rt_pg/rtpostgis_upgrade_cleanup.sql.in.c [new file with mode: 0644]

index e2876b30ddcd35ab5092192a6b770d2578728d14..b748ba5d22eedad715ed246e5bd863a01250d688 100644 (file)
@@ -16,7 +16,7 @@ DATA_built=rtpostgis.sql rtpostgis_upgrade_20_minor.sql
 DATA=
 
 # SQL objects (files requiring C pre-processing)
-SQL_OBJS=rtpostgis.sql.in rtpostgis_drop.sql.in
+SQL_OBJS=rtpostgis.sql.in rtpostgis_drop.sql.in rtpostgis_upgrade_cleanup.sql.in
 
 # Objects to build using PGXS
 OBJS=rt_pg.o
@@ -89,7 +89,7 @@ rtpostgis_upgrade.sql: rtpostgis.sql
                 -e '/^\(CREATE\|ALTER\) \(CAST\|OPERATOR\|TYPE\|TABLE\|SCHEMA\|DOMAIN\|TRIGGER\)/,/\;/d' \
                 $< > $@
                 
-rtpostgis_upgrade_20_minor.sql: rtpostgis_drop.sql rtpostgis_upgrade.sql
+rtpostgis_upgrade_20_minor.sql: rtpostgis_drop.sql rtpostgis_upgrade_cleanup.sql rtpostgis_upgrade.sql 
        cat $^ > $@
 
 distclean: clean
index 6413854e5eebfd4f30ebd8404f4a61aff18fa3a1..00007432ff4a47c628130daafd294f9f30a4e4d2 100644 (file)
 -- Drop obsolete functions 
 -- (which fully obsolete, changed to take default args, or outp params changed) --
 
--- GIST operator functions
-/* commented out for Regina's consideration
-DROP OPERATOR IF EXISTS << (raster, raster);
-DROP FUNCTION IF EXISTS st_left(raster, raster);
-DROP OPERATOR IF EXISTS &< (raster, raster);
-DROP FUNCTION IF EXISTS st_overleft(raster, raster);
-DROP OPERATOR IF EXISTS <<| (raster, raster);
-DROP FUNCTION IF EXISTS st_below(raster, raster);
-DROP OPERATOR IF EXISTS &<| (raster, raster);
-DROP FUNCTION IF EXISTS st_overbelow(raster, raster);
-DROP OPERATOR IF EXISTS && (raster, raster);
-DROP FUNCTION IF EXISTS st_overlap(raster, raster);
-DROP OPERATOR IF EXISTS &> (raster, raster);
-DROP FUNCTION IF EXISTS st_overright(raster, raster);
-DROP OPERATOR IF EXISTS >> (raster, raster);
-DROP FUNCTION IF EXISTS st_right(raster, raster);
-DROP OPERATOR IF EXISTS |&> (raster, raster);
-DROP FUNCTION IF EXISTS st_overabove(raster, raster);
-DROP OPERATOR IF EXISTS |>> (raster, raster);
-DROP FUNCTION IF EXISTS st_above(raster, raster);
-DROP OPERATOR IF EXISTS ~= (raster, raster);
-DROP FUNCTION IF EXISTS st_same(raster, raster);
-DROP OPERATOR IF EXISTS @ (raster, raster);
-DROP FUNCTION IF EXISTS st_contained(raster, raster);
-DROP OPERATOR IF EXISTS ~ (raster, raster);
-DROP FUNCTION IF EXISTS st_contain(raster, raster);
-*/
-
--- drop st_bytea
-/* commented out for Regina's consideration
-DROP CAST IF EXITS (raster as bytea);
-DROP FUNCTION IF EXISTS st_bytea(raster);
-*/
-
--- drop box2d
-/* commented out for Regina's consideration
-DROP CAST IF EXISTS (raster AS box2d);
-DROP FUNCTION IF EXISTS box2d(raster);
-*/
-
 -- drop aggregates
 DROP AGGREGATE IF EXISTS ST_Union(raster, text, text, text, double precision, text, text, text, double precision, text, text, text, double precision);
 DROP AGGREGATE IF EXISTS ST_Union(raster, text, text, text);
diff --git a/raster/rt_pg/rtpostgis_upgrade_cleanup.sql.in.c b/raster/rt_pg/rtpostgis_upgrade_cleanup.sql.in.c
new file mode 100644 (file)
index 0000000..abd523f
--- /dev/null
@@ -0,0 +1,100 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- $Id: rtpostgis_upgrade.sql.in.c 8448 2011-12-16 22:07:26Z dustymugs $
+--
+-- PostGIS Raster - Raster Type for PostGIS
+-- http://trac.osgeo.org/postgis/wiki/WKTRaster
+--
+-- Copyright (c) 2011 Regina Obe <lr@pcorp.us>
+-- Copyright (C) 2011 Regents of the University of California
+--   <bkpark@ucdavis.edu>
+--
+-- This is free software; you can redistribute and/or modify it under
+-- the terms of the GNU General Public Licence. See the COPYING file.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+-- This section is take add / drop things like CASTS, TYPES etc. that have changed
+-- Since these are normally excluded from sed upgrade generator
+-- they must be explicitly added
+-- So that they can immediately be recreated. 
+-- It is not run thru the sed processor to prevent it from being stripped
+-- Note: We put these in separate file from drop since the extension module has
+-- to add additional logic to drop them from the extension as well
+#include "sqldefines.h"
+/** -- GIST operator functions -- these don't seem necessary
+DROP OPERATOR IF EXISTS << (raster, raster);
+DROP FUNCTION IF EXISTS st_left(raster, raster);
+DROP OPERATOR IF EXISTS &< (raster, raster);
+DROP FUNCTION IF EXISTS st_overleft(raster, raster);
+DROP OPERATOR IF EXISTS <<| (raster, raster);
+DROP FUNCTION IF EXISTS st_below(raster, raster);
+DROP OPERATOR IF EXISTS &<| (raster, raster);
+DROP FUNCTION IF EXISTS st_overbelow(raster, raster);
+DROP OPERATOR IF EXISTS && (raster, raster);
+DROP FUNCTION IF EXISTS st_overlap(raster, raster);
+DROP OPERATOR IF EXISTS &> (raster, raster);
+DROP FUNCTION IF EXISTS st_overright(raster, raster);
+DROP OPERATOR IF EXISTS >> (raster, raster);
+DROP FUNCTION IF EXISTS st_right(raster, raster);
+DROP OPERATOR IF EXISTS |&> (raster, raster);
+DROP FUNCTION IF EXISTS st_overabove(raster, raster);
+DROP OPERATOR IF EXISTS |>> (raster, raster);
+DROP FUNCTION IF EXISTS st_above(raster, raster);
+DROP OPERATOR IF EXISTS ~= (raster, raster);
+DROP FUNCTION IF EXISTS st_same(raster, raster);
+DROP OPERATOR IF EXISTS @ (raster, raster);
+DROP FUNCTION IF EXISTS st_contained(raster, raster);
+DROP OPERATOR IF EXISTS ~ (raster, raster);
+DROP FUNCTION IF EXISTS st_contain(raster, raster); **/
+
+-- drop st_bytea
+DROP CAST IF EXISTS (raster as bytea);
+DROP FUNCTION IF EXISTS st_bytea(raster);
+
+CREATE OR REPLACE FUNCTION bytea(raster)
+    RETURNS bytea
+    AS 'MODULE_PATHNAME', 'RASTER_to_bytea'
+    LANGUAGE 'C' IMMUTABLE STRICT;
+CREATE CAST (raster AS bytea)
+    WITH FUNCTION bytea(raster) AS IMPLICIT;
+
+-- drop box2d
+DROP CAST IF EXISTS (raster AS box2d);
+DROP FUNCTION IF EXISTS box2d(raster);
+
+-- create box3d cast if it does not exist --
+-- If we are running 9.0+ we can use DO plpgsql to check
+-- and only create if not exists so no need to force a drop
+-- that way if people are using it, we will not mess them up
+#if POSTGIS_PGSQL_VERSION >= 90
+DO language 'plpgsql' $$DECLARE r record;
+BEGIN
+       IF NOT EXISTS(SELECT  cs.typname As source
+               FROM pg_cast AS ca 
+               INNER JOIN pg_type AS cs ON ca.castsource = cs.oid
+               INNER JOIN pg_type AS ct ON ca.casttarget = ct.oid
+               WHERE cs.typname = 'raster' AND ct.typname = 'box2d') THEN
+               CREATE OR REPLACE FUNCTION box3d(raster)
+               RETURNS box3d
+               AS 'select box3d(st_convexhull($1))'
+               LANGUAGE 'SQL' IMMUTABLE STRICT;
+               CREATE CAST (raster AS box3d)
+                       WITH FUNCTION box3d(raster) AS IMPLICIT;
+    END IF;
+END$$; 
+#endif
+-- if we are running 8.4 we need to use brute force
+#if POSTGIS_PGSQL_VERSION < 90
+DROP CAST IF EXISTS (raster as box3d);
+CREATE OR REPLACE FUNCTION box3d(raster)
+    RETURNS box3d
+    AS 'select box3d(st_convexhull($1))'
+    LANGUAGE 'SQL' IMMUTABLE STRICT;
+CREATE CAST (raster AS box3d)
+    WITH FUNCTION box3d(raster) AS IMPLICIT;
+#endif