PG_FUNCTION_INFO_V1(centroid);
Datum centroid(PG_FUNCTION_ARGS)
{
+ LWGEOM *lwg;
GSERIALIZED *geom, *result;
GEOSGeometry *geosgeom, *geosresult;
geom = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
- /* Empty.Centroid() == Empty */
+ /* Empty.Centroid() == Point Empty */
if ( gserialized_is_empty(geom) )
- PG_RETURN_POINTER(geom);
+ {
+ lwg = lwpoint_construct_empty(gserialized_get_srid(geom), gserialized_has_z(geom), gserialized_has_m(geom));
+ result = geometry_serialize(lwpoint_as_lwgeom(lwg));
+ PG_RETURN_POINTER(result);
+ }
initGEOS(lwnotice, lwgeom_geos_error);
-- #683 --
SELECT '#683', ST_BuildArea(ST_GeomFromText('POINT EMPTY',4326));
--- #684 --
-SELECT '#684', ST_Centroid(ST_GeomFromText('POLYGON EMPTY',4326));
+-- #684,#2109 --
+SELECT '#684,#2109', ST_AsEWKT(ST_Centroid(ST_GeomFromText('POLYGON EMPTY',4326)));
+SELECT '#2109', ST_AsEWKT(ST_Centroid(ST_GeomFromText('MULTILINESTRING ZM EMPTY',3395)));
-- #685 --
SELECT '#685', ST_ConvexHull(ST_GeomFromText('POLYGON EMPTY',4326));
#681g|
#682|0103000020E610000000000000
#683|0103000020E610000000000000
-#684|0103000020E610000000000000
+#684,#2109|SRID=4326;POINT EMPTY
+#2109|SRID=3395;POINT EMPTY
#685|0103000020E610000000000000
#686|0107000020E610000000000000
#687|f