From: Sandro Santilli Date: Fri, 9 Dec 2011 12:25:37 +0000 (+0000) Subject: Allow calling ST_MakeEnvelope w/out a srid (#1339) X-Git-Tag: 2.0.0alpha1~541 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5764c37a573668a1d1c1792d52c6b4905a7d9a38;p=postgis Allow calling ST_MakeEnvelope w/out a srid (#1339) git-svn-id: http://svn.osgeo.org/postgis/trunk@8332 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/postgis/lwgeom_functions_basic.c b/postgis/lwgeom_functions_basic.c index daef138da..30e7c6804 100644 --- a/postgis/lwgeom_functions_basic.c +++ b/postgis/lwgeom_functions_basic.c @@ -1987,7 +1987,7 @@ Datum ST_MakeEnvelope(PG_FUNCTION_ARGS) POINTARRAY **pa; POINT4D p; double x1, y1, x2, y2; - int srid; + int srid = SRID_UNKNOWN; POSTGIS_DEBUG(2, "ST_MakeEnvelope called"); @@ -1995,9 +1995,11 @@ Datum ST_MakeEnvelope(PG_FUNCTION_ARGS) y1 = PG_GETARG_FLOAT8(1); x2 = PG_GETARG_FLOAT8(2); y2 = PG_GETARG_FLOAT8(3); - srid = PG_GETARG_INT32(4); + if ( PG_NARGS() > 4 ) { + srid = PG_GETARG_INT32(4); + } - pa = (POINTARRAY**)palloc(sizeof(POINTARRAY*)); + pa = (POINTARRAY**)palloc(sizeof(POINTARRAY**)); pa[0] = ptarray_construct_empty(0, 0, 5); /* 1st point */ diff --git a/postgis/postgis.sql.in.c b/postgis/postgis.sql.in.c index 9ac9da418..8ecc5e953 100644 --- a/postgis/postgis.sql.in.c +++ b/postgis/postgis.sql.in.c @@ -1130,6 +1130,12 @@ CREATE OR REPLACE FUNCTION ST_MakeEnvelope(float8, float8, float8, float8, integ AS 'MODULE_PATHNAME', 'ST_MakeEnvelope' LANGUAGE 'C' IMMUTABLE STRICT; +-- Availability: 2.0.0 +CREATE OR REPLACE FUNCTION ST_MakeEnvelope(float8, float8, float8, float8) + RETURNS geometry + AS 'MODULE_PATHNAME', 'ST_MakeEnvelope' + LANGUAGE 'C' IMMUTABLE STRICT; + -- Availability: 1.2.2 CREATE OR REPLACE FUNCTION ST_MakePolygon(geometry, geometry[]) RETURNS geometry diff --git a/regress/regress.sql b/regress/regress.sql index 918c91e2a..5fabe1817 100644 --- a/regress/regress.sql +++ b/regress/regress.sql @@ -247,6 +247,8 @@ select '150', ST_AsEWKT(ST_force_collection(ST_setsrid('POLYGON((0 0, 1 0, 1 1, select '151', ST_MakeEnvelope(0, 0, 1, 1, 4326); select '152', ST_SRID(ST_MakeEnvelope(0, 0, 1, 1, 4326)); +select '152.1', ST_SRID(ST_MakeEnvelope(0, 0, 1, 1)) = ST_SRID('POINT(0 0)'); +select '152.2', ST_SRID(ST_SetSRID(ST_MakeEnvelope(0, 0, 1, 1), 4326)); select '153', ST_AsText(ST_CollectionExtract('GEOMETRYCOLLECTION(POINT(0 0))',1)); select '154', ST_AsText(ST_CollectionExtract('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0)))',1)); diff --git a/regress/regress_expected b/regress/regress_expected index 4a736698b..e5fde4b54 100644 --- a/regress/regress_expected +++ b/regress/regress_expected @@ -169,6 +169,8 @@ HINT: "MULTIPOINT(1 1, 2 2" <-- parse error at position 19 within geometry 150|SRID=6;GEOMETRYCOLLECTION(POLYGON((0 0,1 0,1 1,0 1,0 0))) 151|0103000020E61000000100000005000000000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F000000000000F03F000000000000F03F000000000000000000000000000000000000000000000000 152|4326 +152.1|t +152.2|4326 153|MULTIPOINT(0 0) 154|MULTIPOINT(0 0) 155|MULTIPOINT(0 0,1 1)