]> granicus.if.org Git - postgis/commitdiff
Added legacy.sql which adds renamed and removed columns to raster_columns and raster_...
authorBborie Park <bkpark at ucdavis.edu>
Sun, 1 Jan 2012 21:04:21 +0000 (21:04 +0000)
committerBborie Park <bkpark at ucdavis.edu>
Sun, 1 Jan 2012 21:04:21 +0000 (21:04 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@8643 b70326c6-7e19-0410-871a-916f4a2858ee

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

index 816d02cd28aed0bd8396ae8d57a3bd8af2938510..f565428a9c0b7efdf272c76a774f56b158145393 100644 (file)
@@ -7,3 +7,6 @@ rtpostgis_upgrade.sql
 rtpostgis_upgrade_20_minor.sql
 rtpostgis_upgrade_cleanup.sql
 rtpostgis_upgrade_cleanup.sql.in
+uninstall_rtpostgis.sql
+legacy.sql
+legacy.sql.in
index c432299e35ff5034ce4405e37b91e0f4d80f00e1..9fb58cc374aaac35f7cc9a9956156163b69466d7 100644 (file)
@@ -14,11 +14,11 @@ MODULE_big=rtpostgis-@POSTGIS_MAJOR_VERSION@.@POSTGIS_MINOR_VERSION@
 MODULEDIR=contrib/postgis-@POSTGIS_MAJOR_VERSION@.@POSTGIS_MINOR_VERSION@
 
 # Files to be copied to the contrib/ directory
-DATA_built=rtpostgis.sql rtpostgis_drop.sql rtpostgis_upgrade_20_minor.sql rtpostgis_upgrade_cleanup.sql uninstall_rtpostgis.sql
+DATA_built=rtpostgis.sql rtpostgis_drop.sql rtpostgis_upgrade_20_minor.sql rtpostgis_upgrade_cleanup.sql uninstall_rtpostgis.sql legacy.sql
 DATA=
 
 # SQL objects (files requiring C pre-processing)
-SQL_OBJS=rtpostgis.sql.in rtpostgis_drop.sql.in rtpostgis_upgrade_cleanup.sql.in
+SQL_OBJS=rtpostgis.sql.in rtpostgis_drop.sql.in rtpostgis_upgrade_cleanup.sql.in legacy.sql.in
 
 # Objects to build using PGXS
 OBJS=rt_pg.o
diff --git a/raster/rt_pg/legacy.sql.in.c b/raster/rt_pg/legacy.sql.in.c
new file mode 100644 (file)
index 0000000..aedbf27
--- /dev/null
@@ -0,0 +1,122 @@
+-------------------------------------------------------------------------------
+--
+-- $Id$
+--
+-- PostGIS Raster - Raster Type for PostGIS
+-- http://trac.osgeo.org/postgis/wiki/WKTRaster
+--
+-- Copyright (C) 2012 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.
+--
+-------------------------------------------------------------------------------
+
+--
+-- For legacy access to OLD versions of raster_columns AND raster_overviews
+--
+
+-- raster_columns and raster_overviews tables no longer exist
+-- if tables found, rename tables
+DROP FUNCTION IF EXISTS _rename_raster_tables();
+CREATE OR REPLACE FUNCTION _rename_raster_tables()
+       RETURNS void AS $$
+       DECLARE
+               cnt int;
+       BEGIN
+               SELECT count(*) INTO cnt
+               FROM pg_class c
+               JOIN pg_namespace n
+                       ON c.relnamespace = n.oid
+               WHERE c.relname = 'raster_columns'
+                       AND c.relkind = 'r'::char
+                       AND NOT pg_is_other_temp_schema(c.relnamespace);
+
+               IF cnt > 0 THEN
+                       EXECUTE 'ALTER TABLE raster_columns RENAME TO deprecated_raster_columns';
+               END IF;
+
+               SELECT count(*) INTO cnt
+               FROM pg_class c
+               JOIN pg_namespace n
+                       ON c.relnamespace = n.oid
+               WHERE c.relname = 'raster_overviews'
+                       AND c.relkind = 'r'::char
+                       AND NOT pg_is_other_temp_schema(c.relnamespace);
+
+               IF cnt > 0 THEN
+                       EXECUTE 'ALTER TABLE raster_overviews RENAME TO deprecated_raster_overviews';
+               END IF;
+
+       END;
+       $$ LANGUAGE 'plpgsql' VOLATILE;
+SELECT _rename_raster_tables();
+DROP FUNCTION _rename_raster_tables();
+
+-- drop raster_columns and raster_overviews views
+DROP VIEW IF EXISTS raster_overviews;
+DROP VIEW IF EXISTS raster_columns;
+
+CREATE OR REPLACE VIEW raster_columns AS
+       SELECT
+               current_database() AS r_table_catalog,
+               n.nspname AS r_table_schema,
+               c.relname AS r_table_name,
+               a.attname AS r_raster_column,
+               COALESCE(_raster_constraint_info_srid(n.nspname, c.relname, a.attname), (SELECT ST_SRID('POINT(0 0)'::geometry))) AS srid,
+               _raster_constraint_info_scale(n.nspname, c.relname, a.attname, 'x') AS scale_x,
+               _raster_constraint_info_scale(n.nspname, c.relname, a.attname, 'y') AS scale_y,
+               _raster_constraint_info_blocksize(n.nspname, c.relname, a.attname, 'width') AS blocksize_x,
+               _raster_constraint_info_blocksize(n.nspname, c.relname, a.attname, 'height') AS blocksize_y,
+               COALESCE(_raster_constraint_info_alignment(n.nspname, c.relname, a.attname), FALSE) AS same_alignment,
+               COALESCE(_raster_constraint_info_regular_blocking(n.nspname, c.relname, a.attname), FALSE) AS regular_blocking,
+               _raster_constraint_info_num_bands(n.nspname, c.relname, a.attname) AS num_bands,
+               _raster_constraint_info_pixel_types(n.nspname, c.relname, a.attname) AS pixel_types,
+               _raster_constraint_info_nodata_values(n.nspname, c.relname, a.attname) AS nodata_values,
+               _raster_constraint_info_extent(n.nspname, c.relname, a.attname) AS extent,
+               a.attname AS r_column,
+               FALSE AS out_db
+       FROM
+               pg_class c,
+               pg_attribute a,
+               pg_type t,
+               pg_namespace n
+       WHERE t.typname = 'raster'::name
+               AND a.attisdropped = false
+               AND a.atttypid = t.oid
+               AND a.attrelid = c.oid
+               AND c.relnamespace = n.oid
+               AND (c.relkind = 'r'::"char" OR c.relkind = 'v'::"char")
+               AND NOT pg_is_other_temp_schema(c.relnamespace);
+
+CREATE OR REPLACE VIEW raster_overviews AS
+       SELECT
+               current_database() AS o_table_catalog,
+               n.nspname AS o_table_schema,
+               c.relname AS o_table_name,
+               a.attname AS o_raster_column,
+               current_database() AS r_table_catalog,
+               split_part(split_part(s.consrc, '''::name', 1), '''', 2)::name AS r_table_schema,
+               split_part(split_part(s.consrc, '''::name', 2), '''', 2)::name AS r_table_name,
+               split_part(split_part(s.consrc, '''::name', 3), '''', 2)::name AS r_raster_column,
+               trim(both from split_part(s.consrc, ',', 2))::integer AS overview_factor,
+               a.attname AS o_column,
+               split_part(split_part(s.consrc, '''::name', 3), '''', 2)::name AS r_column,
+               FALSE AS out_db
+       FROM
+               pg_class c,
+               pg_attribute a,
+               pg_type t,
+               pg_namespace n,
+               pg_constraint s
+       WHERE t.typname = 'raster'::name
+               AND a.attisdropped = false
+               AND a.atttypid = t.oid
+               AND a.attrelid = c.oid
+               AND c.relnamespace = n.oid
+               AND (c.relkind = 'r'::"char" OR c.relkind = 'v'::"char")
+               AND s.connamespace = n.oid
+               AND s.conrelid = c.oid
+               AND s.consrc LIKE '%_overview_constraint(%'
+               AND NOT pg_is_other_temp_schema(c.relnamespace);