-- Construct the face geometry, then for each polygon:
FOR rec IN SELECT (ST_DumpRings((ST_Dump(ST_ForceRHR(
- topology.ST_GetFaceGeometry(toponame, face_id)))).geom)).*
+ topology.ST_GetFaceGeometry(toponame, face_id)))).geom)).geom
LOOP
-- Contents of a directed face are the list of edges
RAISE EXCEPTION 'Face geometry must be a polygon';
END IF;
- for rrec IN SELECT (ST_DumpRings(ST_ForceRHR(apoly))).*
+ for rrec IN SELECT (ST_DumpRings(ST_ForceRHR(apoly))).geom
LOOP -- {
--
-- Find all bounds edges, forcing right-hand-rule
-- Construct the face geometry, then for each ring of each polygon:
sql := 'SELECT (ST_DumpRings((ST_Dump(ST_ForceRHR('
- || 'ST_BuildArea(ST_Collect(geom))))).geom)).* FROM '
+ || 'ST_BuildArea(ST_Collect(geom))))).geom)).geom FROM '
|| quote_ident(toponame) || '.edge_data WHERE left_face = '
|| face_id || ' OR right_face = ' || face_id;
FOR rec IN EXECUTE sql