]> granicus.if.org Git - postgis/commitdiff
Allow calling ST_MakeEnvelope w/out a srid (#1339)
authorSandro Santilli <strk@keybit.net>
Fri, 9 Dec 2011 12:25:37 +0000 (12:25 +0000)
committerSandro Santilli <strk@keybit.net>
Fri, 9 Dec 2011 12:25:37 +0000 (12:25 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@8332 b70326c6-7e19-0410-871a-916f4a2858ee

postgis/lwgeom_functions_basic.c
postgis/postgis.sql.in.c
regress/regress.sql
regress/regress_expected

index daef138da57b0cef166475d2ed3e8edeca16f857..30e7c6804532142104024f636bd95d735e02ec91 100644 (file)
@@ -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 */
index 9ac9da4187a206f948adc5ca99d27d531d2c4a75..8ecc5e9533dbe3dac09a1c856e2f0066ec8548de 100644 (file)
@@ -1130,6 +1130,12 @@ CREATE OR REPLACE FUNCTION ST_MakeEnvelope(float8, float8, float8, float8, integ
        AS 'MODULE_PATHNAME', 'ST_MakeEnvelope'\r
        LANGUAGE 'C' IMMUTABLE STRICT;\r
 \r
+-- Availability: 2.0.0\r
+CREATE OR REPLACE FUNCTION ST_MakeEnvelope(float8, float8, float8, float8)\r
+       RETURNS geometry\r
+       AS 'MODULE_PATHNAME', 'ST_MakeEnvelope'\r
+       LANGUAGE 'C' IMMUTABLE STRICT;\r
+\r
 -- Availability: 1.2.2\r
 CREATE OR REPLACE FUNCTION ST_MakePolygon(geometry, geometry[])\r
        RETURNS geometry\r
index 918c91e2a105db8b5f2de03b51bd56523c067818..5fabe181710a4b639aece2864b0bdd072a751edc 100644 (file)
@@ -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));
index 4a736698b22513bf612724e93e9dc5ecdc7135a0..e5fde4b54114934c5e1e427015790e4b49f9e925 100644 (file)
@@ -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)