Datum LWGEOM_line_interpolate_point(PG_FUNCTION_ARGS)
{
GSERIALIZED *gser = (GSERIALIZED *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+ GSERIALIZED *result;
double distance = PG_GETARG_FLOAT8(1);
LWLINE *line;
LWGEOM *geom;
PG_RETURN_NULL();
}
+ /* Empty.InterpolatePoint == Point Empty */
+ if ( gserialized_is_empty(gser) )
+ {
+ geom = lwpoint_construct_empty(gserialized_get_srid(gser), gserialized_has_z(gser), gserialized_has_m(gser));
+ result = geometry_serialize(lwpoint_as_lwgeom(geom));
+ lwgeom_free(geom);
+ PG_RETURN_POINTER(result);
+ }
+
geom = lwgeom_from_gserialized(gser);
line = lwgeom_as_lwline(geom);
ipa = line->points;
) as foo;
-- 2112 -- End
+SELECT '#2108', ST_AsEWKT(ST_Line_Interpolate_Point('SRID=3395;LINESTRING M EMPTY'::geometry, 0.5));
SELECT '#2117', ST_AsEWKT(ST_PointOnSurface('SRID=3395;MULTIPOLYGON M EMPTY'::geometry));
-- Clean up
#2048|3|f|f
#2112a|0|LINESTRING(2.5 2.5 1,2.5 2.5 1)
#2112b|1|LINESTRING(1 1 1,1 0 1)
+#2108|SRID=3395;POINTM EMPTY
#2117|SRID=3395;POINTM EMPTY