SELECT 'MA', ST_AsText(CreateTopoGeom( 'MiX', 3, 4, '{{1,3}}')); -- fine area
SELECT 'MM', ST_AsText(CreateTopoGeom( 'MiX', 4, 4, '{{1,3},{1,2},{1,1}}')); -- fine mix
+-- Test emptyness {
+SELECT 'POINT EMPTY', ST_AsEWKT( CreateTopoGeom( 'MiX', 1, 4, '{{0,0}}' ) );
+SELECT 'LINESTRING EMPTY', ST_AsEWKT( CreateTopoGeom( 'MiX', 2, 4, '{{0,0}}' ) );
+SELECT 'POLYGON EMPTY', ST_AsEWKT( CreateTopoGeom( 'MiX', 3, 4, '{{0,0}}' ) );
+SELECT 'GEOMETRYCOLLECTION EMPTY', ST_AsEWKT( CreateTopoGeom( 'MiX', 4, 4, '{{0,0}}' ) );
+-- } Test emptyness
+
SELECT DropTopology('MiX');
ML|LINESTRING(0 0,10 0)
MA|POLYGON((10 0,0 0,5 5,10 0))
MM|GEOMETRYCOLLECTION EMPTY
+POINT EMPTY|POINT EMPTY
+LINESTRING EMPTY|LINESTRING EMPTY
+POLYGON EMPTY|POLYGON EMPTY
+GEOMETRYCOLLECTION EMPTY|GEOMETRYCOLLECTION EMPTY
Topology 'MiX' dropped
LOOP
geom := rec.g;
END LOOP;
+ IF geom IS NULL THEN
+ geom := 'POLYGON EMPTY';
+ END IF;
ELSIF topogeom.type = 2 THEN -- [multi]line
FOR rec IN EXECUTE 'SELECT ST_LineMerge(ST_Collect(e.geom)) as g FROM '
LOOP
geom := rec.g;
END LOOP;
+ IF geom IS NULL THEN
+ geom := 'LINESTRING EMPTY';
+ END IF;
ELSIF topogeom.type = 1 THEN -- [multi]point
FOR rec IN EXECUTE 'SELECT st_union(n.geom) as g FROM '
LOOP
geom := rec.g;
END LOOP;
+ IF geom IS NULL THEN
+ geom := 'POINT EMPTY';
+ END IF;
ELSE
RAISE NOTICE 'Geometry from TopoGeometry does not support TopoGeometries of type % so far', topogeom.type;