if (state->pt == 0) lwpoint = lwgeom_as_lwpoint(lwgeom);
break;
case LINETYPE:
- case CIRCSTRINGTYPE:
line = lwgeom_as_lwline(lwgeom);
if (line->points && state->pt <= line->points->npoints) {
lwpoint = lwline_get_lwpoint((LWLINE*)lwgeom, state->pt);
}
break;
- case CURVEPOLYTYPE:
+ case CIRCSTRINGTYPE:
+ ereport(ERROR, (errcode(ERRCODE_DATA_EXCEPTION),
+ errmsg("Invalid Geometry type circstring passed to ST_DumpPoints()")));
default:
- /* TODO error? */
- if (--state->stacklen == 0) SRF_RETURN_DONE(funcctx);
- state->pathlen--;
- continue;
+ ereport(ERROR, (errcode(ERRCODE_DATA_EXCEPTION),
+ errmsg("Invalid Geometry type passed to ST_DumpPoints()")));
}
/*
)'::geometry AS geom
) AS g
) j;
+
+SELECT path, ST_AsText(geom)
+FROM (
+ SELECT (ST_DumpPoints(g.geom)).*
+ FROM
+ (SELECT 'SRID=4326;CURVEPOLYGON(
+ CIRCULARSTRING(-71.0821 42.3036, -71.4821 42.3036,
+ -71.7821 42.7036, -71.0821 42.7036, -71.0821 42.3036),
+ (-71.1821 42.4036, -71.3821 42.6036, -71.3821 42.4036, -71.1821 42.4036)
+ )'::geometry as geom
+) as g
+) j;
+
+SELECT path, ST_AsText(geom)
+FROM (
+ SELECT (ST_DumpPoints(g.geom)).*
+ FROM (
+SELECT 'CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1))'::geometry as geom
+) as g
+) j;