From: Regina Obe Date: Mon, 19 Dec 2011 04:48:07 +0000 (+0000) Subject: revise upgrade script to take into consideration change in casts X-Git-Tag: 2.0.0alpha1~411 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a7e29906f706254649072d47d67e94767bbc05b8;p=postgis revise upgrade script to take into consideration change in casts git-svn-id: http://svn.osgeo.org/postgis/trunk@8463 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/raster/rt_pg/Makefile.in b/raster/rt_pg/Makefile.in index e2876b30d..b748ba5d2 100644 --- a/raster/rt_pg/Makefile.in +++ b/raster/rt_pg/Makefile.in @@ -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 diff --git a/raster/rt_pg/rtpostgis_drop.sql.in.c b/raster/rt_pg/rtpostgis_drop.sql.in.c index 6413854e5..00007432f 100644 --- a/raster/rt_pg/rtpostgis_drop.sql.in.c +++ b/raster/rt_pg/rtpostgis_drop.sql.in.c @@ -23,46 +23,6 @@ -- 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 index 000000000..abd523fb7 --- /dev/null +++ b/raster/rt_pg/rtpostgis_upgrade_cleanup.sql.in.c @@ -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 +-- Copyright (C) 2011 Regents of the University of California +-- +-- +-- 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