From: Bborie Park Date: Thu, 20 Jun 2013 15:57:44 +0000 (+0000) Subject: Added spatial_index column to raster_columns view. Ticket #2361 X-Git-Tag: 2.2.0rc1~1481 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=02b2715d4a8d0331f22946652764c1d83a993f2e;p=postgis Added spatial_index column to raster_columns view. Ticket #2361 git-svn-id: http://svn.osgeo.org/postgis/trunk@11553 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/NEWS b/NEWS index af4b9f07a..066ed9adc 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,7 @@ PostGIS 2.2.0 * Enhancements * - Added missing variants of ST_TPI(), ST_TRI() and ST_Roughness() + - #2361, Added spatial_index column to raster_columns view * Bug Fixes * diff --git a/raster/rt_pg/rtpostgis.sql.in b/raster/rt_pg/rtpostgis.sql.in index 4a31cd088..bcafac3e9 100644 --- a/raster/rt_pg/rtpostgis.sql.in +++ b/raster/rt_pg/rtpostgis.sql.in @@ -7504,6 +7504,31 @@ CREATE OR REPLACE FUNCTION _drop_raster_constraint_out_db(rastschema name, rastt LANGUAGE 'sql' VOLATILE STRICT COST 100; +CREATE OR REPLACE FUNCTION _raster_constraint_info_index(rastschema name, rasttable name, rastcolumn name) + RETURNS boolean AS $$ + SELECT + TRUE + FROM pg_catalog.pg_class c + JOIN pg_catalog.pg_index i + ON i.indexrelid = c.oid + JOIN pg_catalog.pg_class c2 + ON i.indrelid = c2.oid + JOIN pg_catalog.pg_namespace n + ON n.oid = c.relnamespace + JOIN pg_am am + ON c.relam = am.oid + JOIN pg_attribute att + ON att.attrelid = c2.oid + AND pg_catalog.format_type(att.atttypid, att.atttypmod) = 'raster' + WHERE c.relkind IN ('i') + AND n.nspname = $1 + AND c2.relname = $2 + AND att.attname = $3 + AND am.amname = 'gist' + AND strpos(pg_catalog.pg_get_expr(i.indexprs, i.indrelid), att.attname) > 0; + $$ LANGUAGE sql STABLE STRICT + COST 100; + ------------------------------------------------------------------------------ -- AddRasterConstraints ------------------------------------------------------------------------------ @@ -8019,7 +8044,8 @@ CREATE OR REPLACE VIEW raster_columns AS _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_out_db(n.nspname, c.relname, a.attname) AS out_db, - _raster_constraint_info_extent(n.nspname, c.relname, a.attname) AS extent + _raster_constraint_info_extent(n.nspname, c.relname, a.attname) AS extent, + COALESCE(_raster_constraint_info_index(n.nspname, c.relname, a.attname), FALSE) AS spatial_index FROM pg_class c, pg_attribute a, diff --git a/raster/test/regress/check_raster_columns.sql b/raster/test/regress/check_raster_columns.sql index 2222ed767..518ee6eba 100644 --- a/raster/test/regress/check_raster_columns.sql +++ b/raster/test/regress/check_raster_columns.sql @@ -2,7 +2,7 @@ -- $Id$ -- -- Copyright (c) 2010 Mateusz Loskot --- Copyright (C) 2011 Regents of the University of California +-- Copyright (C) 2011 - 2013 Regents of the University of California -- -- -- This is free software; you can redistribute and/or modify it under @@ -106,6 +106,26 @@ SELECT make_test_raster(0, 3, 3, 1, 0); SELECT DropRasterConstraints(current_schema(), 'test_raster_columns', 'rast'::name, 'regular_blocking'); SELECT r_table_name, r_raster_column, srid, scale_x, scale_y, blocksize_x, blocksize_y, same_alignment, regular_blocking, num_bands, pixel_types, nodata_values, ST_AsEWKT(extent) FROM raster_columns WHERE r_table_name = 'test_raster_columns'; +-- check spatial_index +SELECT + CASE + WHEN spatial_index IS FALSE + THEN NULL + ELSE FALSE + END +FROM raster_columns WHERE r_table_name = 'test_raster_columns'; +CREATE INDEX test_raster_columns_rast_gist + ON test_raster_columns + USING gist + (st_convexhull(rast)); +SELECT + CASE + WHEN spatial_index IS FALSE + THEN FALSE + ELSE NULL + END +FROM raster_columns WHERE r_table_name = 'test_raster_columns'; + -- ticket #2215 CREATE TABLE test_raster_columns_2 AS SELECT rid, rast FROM test_raster_columns;