From ae7aca281d48adf188c198c520be7a464bcf7664 Mon Sep 17 00:00:00 2001 From: Bborie Park Date: Fri, 16 Dec 2011 22:07:26 +0000 Subject: [PATCH] Minor comment cleanup in rtpostgis.sql.in.c. Added regression tests for AddRasterConstraints, AddOverviewConstraints, DropRasterConstraints and DropOverviewConstraints. git-svn-id: http://svn.osgeo.org/postgis/trunk@8448 b70326c6-7e19-0410-871a-916f4a2858ee --- raster/rt_pg/rtpostgis.sql.in.c | 5 ++ raster/test/regress/check_raster_columns.sql | 70 ++++++++++++++++- .../regress/check_raster_columns_expected | 55 ++++++++++++++ .../test/regress/check_raster_overviews.sql | 76 ++++++++++++++++++- .../regress/check_raster_overviews_expected | 40 ++++++++++ 5 files changed, 242 insertions(+), 4 deletions(-) diff --git a/raster/rt_pg/rtpostgis.sql.in.c b/raster/rt_pg/rtpostgis.sql.in.c index c1921cd20..910c7f181 100644 --- a/raster/rt_pg/rtpostgis.sql.in.c +++ b/raster/rt_pg/rtpostgis.sql.in.c @@ -3476,6 +3476,11 @@ CREATE AGGREGATE ST_Union(raster, integer, text) ( -- test line -- test polygon smaller than pixel -- test and optimize raster totally included in polygon + +----------------------------------------------------------------------- +-- ST_Clip +----------------------------------------------------------------------- + CREATE OR REPLACE FUNCTION ST_Clip(rast raster, band int, geom geometry, nodata float8 DEFAULT null, trimraster boolean DEFAULT false) RETURNS raster AS $$ diff --git a/raster/test/regress/check_raster_columns.sql b/raster/test/regress/check_raster_columns.sql index bdf53a9e6..7d44e989f 100644 --- a/raster/test/regress/check_raster_columns.sql +++ b/raster/test/regress/check_raster_columns.sql @@ -2,16 +2,82 @@ -- $Id$ -- -- Copyright (c) 2010 Mateusz Loskot +-- 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. ----------------------------------------------------------------------- ----------------------------------------------------------------------- ---- Test RASTER_COLUMNS table +--- Test RASTER_COLUMNS ----------------------------------------------------------------------- -- Check table exists SELECT c.relname FROM pg_class c, pg_views v WHERE c.relname = v.viewname - AND v.viewname = 'raster_columns' + AND v.viewname = 'raster_columns'; + +----------------------------------------------------------------------- +--- Test AddRasterConstraints and DropRasterConstraints +----------------------------------------------------------------------- + +DROP TABLE IF EXISTS test_raster_columns; +CREATE TABLE test_raster_columns ( + rid integer, + rast raster +); +CREATE OR REPLACE FUNCTION make_test_raster( + rid integer, + width integer DEFAULT 2, + height integer DEFAULT 2, + ul_x double precision DEFAULT 0, + ul_y double precision DEFAULT 0, + skew_x double precision DEFAULT 0, + skew_y double precision DEFAULT 0, + initvalue double precision DEFAULT 1, + nodataval double precision DEFAULT 0 +) + RETURNS void + AS $$ + DECLARE + x int; + y int; + rast raster; + BEGIN + rast := ST_MakeEmptyRaster(width, height, ul_x, ul_y, 1, 1, skew_x, skew_y, 0); + rast := ST_AddBand(rast, 1, '8BUI', initvalue, nodataval); + + + INSERT INTO test_raster_columns VALUES (rid, rast); + + RETURN; + END; + $$ LANGUAGE 'plpgsql'; +-- no skew +SELECT make_test_raster(0, 2, 2, -2, -2); +SELECT make_test_raster(1, 2, 2, 0, 0, 0, 0, 2); +SELECT make_test_raster(2, 2, 2, 1, -1, 0, 0, 3); +SELECT make_test_raster(3, 2, 2, 1, 1, 0, 0, 4); +SELECT make_test_raster(4, 2, 2, 2, 2, 0, 0, 5); + +SELECT AddRasterConstraints(current_schema(), 'test_raster_columns', 'rast'::name); +SELECT * FROM raster_columns; + +SELECT DropRasterConstraints(current_schema(),'test_raster_columns', 'rast'::name); +SELECT * FROM raster_columns; + +SELECT AddRasterConstraints('test_raster_columns', 'rast', 'srid', 'extent', 'blocksize'); +SELECT * FROM raster_columns; + +SELECT DropRasterConstraints('test_raster_columns', 'rast', 'scale'); +SELECT * FROM raster_columns; + +SELECT AddRasterConstraints('test_raster_columns', 'rast', FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE); +SELECT * FROM raster_columns; + +SELECT DropRasterConstraints(current_schema(), 'test_raster_columns', 'rast', 'scale'); +SELECT * FROM raster_columns; + +DROP FUNCTION make_test_raster(integer, integer, integer, double precision, double precision, double precision, double precision, double precision, double precision); +DROP TABLE IF EXISTS test_raster_columns; diff --git a/raster/test/regress/check_raster_columns_expected b/raster/test/regress/check_raster_columns_expected index 0f8e0a12a..22af80244 100644 --- a/raster/test/regress/check_raster_columns_expected +++ b/raster/test/regress/check_raster_columns_expected @@ -1 +1,56 @@ raster_columns +NOTICE: table "test_raster_columns" does not exist, skipping +NOTICE: Adding SRID constraint +NOTICE: Adding scale-X constraint +NOTICE: Adding scale-Y constraint +NOTICE: Adding blocksize-X constraint +NOTICE: Adding blocksize-Y constraint +NOTICE: Adding alignment constraint +NOTICE: Adding number of bands constraint +NOTICE: Adding pixel type constraint +NOTICE: Adding nodata value constraint +NOTICE: Adding maximum extent constraint +t +postgis_reg|userland|test_raster_columns|rast|0|1|1|2|2|t|f|1|{8BUI}|{0}|0103000000010000000800000000000000000000C000000000000000C000000000000000C000000000000000000000000000000040000000000000104000000000000010400000000000001040000000000000104000000000000000400000000000000840000000000000F0BF000000000000000000000000000000C000000000000000C000000000000000C0 +NOTICE: Dropping SRID constraint +NOTICE: Dropping scale-X constraint +NOTICE: Dropping scale-Y constraint +NOTICE: Dropping blocksize-X constraint +NOTICE: Dropping blocksize-Y constraint +NOTICE: Dropping alignment constraint +NOTICE: Dropping regular blocking constraint +NOTICE: The constraint "enforce_regular_blocking_rast" does not exist. Skipping +PL/pgSQL function "droprasterconstraints" line 48 at RETURN +NOTICE: Dropping number of bands constraint +NOTICE: Dropping pixel type constraint +NOTICE: Dropping nodata value constraint +NOTICE: Dropping maximum extent constraint +t +postgis_reg|userland|test_raster_columns|rast|0|||||f|f|||| +NOTICE: Adding SRID constraint +NOTICE: Adding maximum extent constraint +NOTICE: Adding blocksize-X constraint +NOTICE: Adding blocksize-Y constraint +t +postgis_reg|userland|test_raster_columns|rast|0|||2|2|f|f||||0103000000010000000800000000000000000000C000000000000000C000000000000000C000000000000000000000000000000040000000000000104000000000000010400000000000001040000000000000104000000000000000400000000000000840000000000000F0BF000000000000000000000000000000C000000000000000C000000000000000C0 +NOTICE: Dropping scale-X constraint +NOTICE: The constraint "enforce_scalex_rast" does not exist. Skipping +PL/pgSQL function "droprasterconstraints" line 65 at assignment +NOTICE: Dropping scale-Y constraint +NOTICE: The constraint "enforce_scaley_rast" does not exist. Skipping +PL/pgSQL function "droprasterconstraints" line 67 at assignment +t +postgis_reg|userland|test_raster_columns|rast|0|||2|2|f|f||||0103000000010000000800000000000000000000C000000000000000C000000000000000C000000000000000000000000000000040000000000000104000000000000010400000000000001040000000000000104000000000000000400000000000000840000000000000F0BF000000000000000000000000000000C000000000000000C000000000000000C0 +NOTICE: Adding scale-X constraint +NOTICE: Adding scale-Y constraint +NOTICE: Adding alignment constraint +NOTICE: Adding number of bands constraint +NOTICE: Adding nodata value constraint +NOTICE: Adding maximum extent constraint +NOTICE: The constraint "enforce_max_extent_rast" already exists. To replace the existing constraint, delete the constraint and call ApplyRasterConstraints again +PL/pgSQL function "addrasterconstraints" line 96 at assignment +PL/pgSQL function "addrasterconstraints" line 48 at RETURN +t +postgis_reg|userland|test_raster_columns|rast|0|1|1|2|2|t|f|1||{0}|0103000000010000000800000000000000000000C000000000000000C000000000000000C000000000000000000000000000000040000000000000104000000000000010400000000000001040000000000000104000000000000000400000000000000840000000000000F0BF000000000000000000000000000000C000000000000000C000000000000000C0 +ERROR: The table 'userland' does not occur in the search_path +postgis_reg|userland|test_raster_columns|rast|0|1|1|2|2|t|f|1||{0}|0103000000010000000800000000000000000000C000000000000000C000000000000000C000000000000000000000000000000040000000000000104000000000000010400000000000001040000000000000104000000000000000400000000000000840000000000000F0BF000000000000000000000000000000C000000000000000C000000000000000C0 diff --git a/raster/test/regress/check_raster_overviews.sql b/raster/test/regress/check_raster_overviews.sql index 9dc1988bd..85fd9e509 100644 --- a/raster/test/regress/check_raster_overviews.sql +++ b/raster/test/regress/check_raster_overviews.sql @@ -2,16 +2,88 @@ -- $Id$ -- -- Copyright (c) 2010 Mateusz Loskot +-- 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. ----------------------------------------------------------------------- ----------------------------------------------------------------------- ---- Test RASTER_OVERVIEWS table +--- Test RASTER_OVERVIEWS ----------------------------------------------------------------------- -- Check table exists SELECT c.relname FROM pg_class c, pg_views v WHERE c.relname = v.viewname - AND v.viewname = 'raster_overviews' + AND v.viewname = 'raster_overviews'; + +----------------------------------------------------------------------- +--- Test AddOverviewConstraints and DropOverviewConstraints +----------------------------------------------------------------------- + +DROP TABLE IF EXISTS test_raster_columns; +CREATE TABLE test_raster_columns ( + rid integer, + rast raster +); +DROP TABLE IF EXISTS test_raster_overviews; +CREATE OR REPLACE FUNCTION make_test_raster( + rid integer, + width integer DEFAULT 2, + height integer DEFAULT 2, + ul_x double precision DEFAULT 0, + ul_y double precision DEFAULT 0, + skew_x double precision DEFAULT 0, + skew_y double precision DEFAULT 0, + initvalue double precision DEFAULT 1, + nodataval double precision DEFAULT 0 +) + RETURNS void + AS $$ + DECLARE + x int; + y int; + rast raster; + BEGIN + rast := ST_MakeEmptyRaster(width, height, ul_x, ul_y, 1, 1, skew_x, skew_y, 0); + rast := ST_AddBand(rast, 1, '8BUI', initvalue, nodataval); + + + INSERT INTO test_raster_columns VALUES (rid, rast); + + RETURN; + END; + $$ LANGUAGE 'plpgsql'; +-- no skew +SELECT make_test_raster(0, 2, 2, -2, -2); +SELECT make_test_raster(1, 2, 2, 0, 0, 0, 0, 2); +SELECT make_test_raster(2, 2, 2, 1, -1, 0, 0, 3); +SELECT make_test_raster(3, 2, 2, 1, 1, 0, 0, 4); +SELECT make_test_raster(4, 2, 2, 2, 2, 0, 0, 5); + +SELECT * +INTO test_raster_overviews +FROM test_raster_columns; +SELECT * FROM raster_columns; +SELECT * FROM raster_overviews; + +SELECT AddRasterConstraints(current_schema(), 'test_raster_columns', 'rast'::name); +SELECT * FROM raster_columns; +SELECT * FROM raster_overviews; + +SELECT AddOverviewConstraints('test_raster_overviews', 'rast', 'test_raster_columns', 'rast', 1); +SELECT * FROM raster_columns; +SELECT * FROM raster_overviews; + +SELECT DropOverviewConstraints(current_schema(), 'test_raster_overviews', 'rast'); +SELECT * FROM raster_columns; +SELECT * FROM raster_overviews; + +SELECT DropRasterConstraints(current_schema(), 'test_raster_columns', 'rast'::name); +SELECT * FROM raster_columns; +SELECT * FROM raster_overviews; + +DROP FUNCTION make_test_raster(integer, integer, integer, double precision, double precision, double precision, double precision, double precision, double precision); +DROP TABLE IF EXISTS test_raster_overviews; +DROP TABLE IF EXISTS test_raster_columns; diff --git a/raster/test/regress/check_raster_overviews_expected b/raster/test/regress/check_raster_overviews_expected index f2598fd69..f25d7fddd 100644 --- a/raster/test/regress/check_raster_overviews_expected +++ b/raster/test/regress/check_raster_overviews_expected @@ -1 +1,41 @@ raster_overviews +NOTICE: table "test_raster_columns" does not exist, skipping +NOTICE: table "test_raster_overviews" does not exist, skipping +postgis_reg|userland|test_raster_columns|rast|0|||||f|f|||| +postgis_reg|userland|test_raster_overviews|rast|0|||||f|f|||| +NOTICE: Adding SRID constraint +NOTICE: Adding scale-X constraint +NOTICE: Adding scale-Y constraint +NOTICE: Adding blocksize-X constraint +NOTICE: Adding blocksize-Y constraint +NOTICE: Adding alignment constraint +NOTICE: Adding number of bands constraint +NOTICE: Adding pixel type constraint +NOTICE: Adding nodata value constraint +NOTICE: Adding maximum extent constraint +t +postgis_reg|userland|test_raster_columns|rast|0|1|1|2|2|t|f|1|{8BUI}|{0}|0103000000010000000800000000000000000000C000000000000000C000000000000000C000000000000000000000000000000040000000000000104000000000000010400000000000001040000000000000104000000000000000400000000000000840000000000000F0BF000000000000000000000000000000C000000000000000C000000000000000C0 +postgis_reg|userland|test_raster_overviews|rast|0|||||f|f|||| +t +postgis_reg|userland|test_raster_columns|rast|0|1|1|2|2|t|f|1|{8BUI}|{0}|0103000000010000000800000000000000000000C000000000000000C000000000000000C000000000000000000000000000000040000000000000104000000000000010400000000000001040000000000000104000000000000000400000000000000840000000000000F0BF000000000000000000000000000000C000000000000000C000000000000000C0 +postgis_reg|userland|test_raster_overviews|rast|0|||||f|f|||| +postgis_reg|userland|test_raster_overviews|rast|postgis_reg|userland|test_raster_columns|rast|1 +t +postgis_reg|userland|test_raster_columns|rast|0|1|1|2|2|t|f|1|{8BUI}|{0}|0103000000010000000800000000000000000000C000000000000000C000000000000000C000000000000000000000000000000040000000000000104000000000000010400000000000001040000000000000104000000000000000400000000000000840000000000000F0BF000000000000000000000000000000C000000000000000C000000000000000C0 +postgis_reg|userland|test_raster_overviews|rast|0|||||f|f|||| +NOTICE: Dropping SRID constraint +NOTICE: Dropping scale-X constraint +NOTICE: Dropping scale-Y constraint +NOTICE: Dropping blocksize-X constraint +NOTICE: Dropping blocksize-Y constraint +NOTICE: Dropping alignment constraint +NOTICE: Dropping regular blocking constraint +NOTICE: The constraint "enforce_regular_blocking_rast" does not exist. Skipping +PL/pgSQL function "droprasterconstraints" line 48 at RETURN +NOTICE: Dropping number of bands constraint +NOTICE: Dropping pixel type constraint +NOTICE: Dropping nodata value constraint +NOTICE: Dropping maximum extent constraint +t +postgis_reg|userland|test_raster_columns|rast|0|||||f|f|||| +postgis_reg|userland|test_raster_overviews|rast|0|||||f|f|||| -- 2.49.0