int joinStyle = DEFAULT_JOIN_STYLE;
char *param;
char *params = NULL;
+ LWGEOM *lwg;
geom1 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
size = PG_GETARG_FLOAT8(1);
- /* Empty.Buffer() == Empty */
+ /* Empty.Buffer() == Empty[polygon] */
if ( gserialized_is_empty(geom1) )
- PG_RETURN_POINTER(geom1);
+ {
+ lwg = lwpoly_as_lwgeom(lwpoly_construct_empty(
+ gserialized_get_srid(geom1),
+ 0, 0)); // buffer wouldn't give back z or m anyway
+ PG_RETURN_POINTER(geometry_serialize(lwg));
+ }
nargs = PG_NARGS();
DROP FUNCTION utmzone(geometry);
DROP TABLE utm_dots;
+SELECT '#322.1', ST_AsEWKT(ST_Buffer('SRID=4326;POINT EMPTY', 0));
+SELECT '#322.2', ST_AsEWKT(ST_Buffer('SRID=4326;LINESTRING EMPTY', 0));
+SELECT '#322.3', ST_AsEWKT(ST_Buffer('SRID=4326;MULTIPOLYGON EMPTY', 0));
+WITH b as ( SELECT ST_Buffer('SRID=4326;MULTIPOINT EMPTY', 1) as g )
+SELECT '#322.4', ST_Srid(g), GeometryType(g) from b;
+
-- #408 --
SELECT '#408', st_isvalidreason('0105000020E0670000010000000102000020E06700000100000016DA52BA62A04141FFF3AD290B735241');
SELECT '#408.1', st_isvalid('0105000020E0670000010000000102000020E06700000100000016DA52BA62A04141FFF3AD290B735241');
#304
#304.a|21
#304.b|1
+#322.1|SRID=4326;POLYGON EMPTY
+#322.2|SRID=4326;POLYGON EMPTY
+#322.3|SRID=4326;POLYGON EMPTY
+#322.4|4326|POLYGON
#408|IllegalArgumentException: point array must contain 0 or >1 elements
NOTICE: IllegalArgumentException: point array must contain 0 or >1 elements
#408.1|f