From: Bborie Park Date: Tue, 13 Dec 2011 23:21:31 +0000 (+0000) Subject: As per discussion in ticket #1373, convert raster constraints with floating point... X-Git-Tag: 2.0.0alpha1~477 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bc5904d25e5158674964eb12751f0ffb6435fc92;p=postgis As per discussion in ticket #1373, convert raster constraints with floating point values (scalex, scaley, nodata values) into numeric(16,10) for comparison due to precision issues. git-svn-id: http://svn.osgeo.org/postgis/trunk@8396 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/raster/rt_pg/rtpostgis.sql.in.c b/raster/rt_pg/rtpostgis.sql.in.c index 4fafaa652..09309d777 100644 --- a/raster/rt_pg/rtpostgis.sql.in.c +++ b/raster/rt_pg/rtpostgis.sql.in.c @@ -3614,7 +3614,7 @@ CREATE OR REPLACE FUNCTION _add_raster_constraint_scale(rastschema name, rasttab || ' ADD CONSTRAINT ' || quote_ident(cn) || ' CHECK (st_scale' || $4 || '(' || quote_ident($3) - || ') = ' || attr || ')'; + || ')::numeric(16,10) = (' || attr || ')::numeric(16,10))'; RETURN _add_raster_constraint(cn, sql); END; $$ LANGUAGE 'plpgsql' VOLATILE STRICT @@ -4054,14 +4054,14 @@ CREATE OR REPLACE FUNCTION _add_raster_constraint_nodata_values(rastschema name, sql := 'ALTER TABLE ' || fqtn || ' ADD CONSTRAINT ' || quote_ident(cn) || ' CHECK (_raster_constraint_nodata_values(' || quote_ident($3) - || ') = ''{'; + || ')::numeric(16,10)[] = ''{'; FOR x in 1..max LOOP sql := sql || attr[x]; IF x < max THEN sql := sql || ','; END IF; END LOOP; - sql := sql || '}''::double precision[])'; + sql := sql || '}''::numeric(16,10)[])'; RETURN _add_raster_constraint(cn, sql); END;