[postgis-commits] svn - r3418 - branches/1.3/regress

postgis-commits at postgis.refractions.net postgis-commits at postgis.refractions.net
Tue Dec 16 04:54:50 PST 2008


Author: robe
Date: 2008-12-16 04:54:48 -0800 (Tue, 16 Dec 2008)
New Revision: 3418

Added:
   branches/1.3/regress/torturetest.sql
Log:
Documented functions spot check test script

Added: branches/1.3/regress/torturetest.sql
===================================================================
--- branches/1.3/regress/torturetest.sql	2008-12-16 12:40:33 UTC (rev 3417)
+++ branches/1.3/regress/torturetest.sql	2008-12-16 12:54:48 UTC (rev 3418)
@@ -0,0 +1,39470 @@
+-- $Id$ 
+/** Used to spot check all documented functions against all geometry types **/
+SELECT 'create,insert,drop Test: Start Testing Multi/POINT'; 
+BEGIN;
+	CREATE TABLE pgis_garden (gid serial);
+	SELECT AddGeometryColumn('pgis_garden','the_geom',ST_SRID(the_geom),GeometryType(the_geom),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo limit 1;
+	SELECT AddGeometryColumn('pgis_garden','the_geom_multi',ST_SRID(the_geom),GeometryType(ST_Multi(the_geom)),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo limit 1;
+	INSERT INTO pgis_garden(the_geom, the_geom_multi)
+	SELECT the_geom, ST_Multi(the_geom)
+	FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo;
+	
+	SELECT UpdateGeometrySRID('pgis_garden', 'the_geom', 4269);
+	
+	SELECT DropGeometryColumn ('pgis_garden','the_geom');
+	SELECT DropGeometryTable ('pgis_garden');
+COMMIT;
+SELECT 'create,insert,drop Test: Start Testing Multi/POINT'; 
+	
+	
+	
+SELECT 'create,insert,drop Test: Start Testing Multi/LINESTRING'; 
+BEGIN;
+	CREATE TABLE pgis_garden (gid serial);
+	SELECT AddGeometryColumn('pgis_garden','the_geom',ST_SRID(the_geom),GeometryType(the_geom),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo limit 1;
+	SELECT AddGeometryColumn('pgis_garden','the_geom_multi',ST_SRID(the_geom),GeometryType(ST_Multi(the_geom)),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo limit 1;
+	INSERT INTO pgis_garden(the_geom, the_geom_multi)
+	SELECT the_geom, ST_Multi(the_geom)
+	FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo;
+	
+	SELECT UpdateGeometrySRID('pgis_garden', 'the_geom', 4269);
+	
+	SELECT DropGeometryColumn ('pgis_garden','the_geom');
+	SELECT DropGeometryTable ('pgis_garden');
+COMMIT;
+SELECT 'create,insert,drop Test: Start Testing Multi/LINESTRING'; 
+	
+	
+	
+SELECT 'create,insert,drop Test: Start Testing Multi/POLYGON'; 
+BEGIN;
+	CREATE TABLE pgis_garden (gid serial);
+	SELECT AddGeometryColumn('pgis_garden','the_geom',ST_SRID(the_geom),GeometryType(the_geom),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo limit 1;
+	SELECT AddGeometryColumn('pgis_garden','the_geom_multi',ST_SRID(the_geom),GeometryType(ST_Multi(the_geom)),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo limit 1;
+	INSERT INTO pgis_garden(the_geom, the_geom_multi)
+	SELECT the_geom, ST_Multi(the_geom)
+	FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo;
+	
+	SELECT UpdateGeometrySRID('pgis_garden', 'the_geom', 4269);
+	
+	SELECT DropGeometryColumn ('pgis_garden','the_geom');
+	SELECT DropGeometryTable ('pgis_garden');
+COMMIT;
+SELECT 'create,insert,drop Test: Start Testing Multi/POLYGON'; 
+	
+	
+	
+SELECT 'create,insert,drop Test: Start Testing Multi/POINTM'; 
+BEGIN;
+	CREATE TABLE pgis_garden (gid serial);
+	SELECT AddGeometryColumn('pgis_garden','the_geom',ST_SRID(the_geom),GeometryType(the_geom),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo limit 1;
+	SELECT AddGeometryColumn('pgis_garden','the_geom_multi',ST_SRID(the_geom),GeometryType(ST_Multi(the_geom)),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo limit 1;
+	INSERT INTO pgis_garden(the_geom, the_geom_multi)
+	SELECT the_geom, ST_Multi(the_geom)
+	FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo;
+	
+	SELECT UpdateGeometrySRID('pgis_garden', 'the_geom', 4269);
+	
+	SELECT DropGeometryColumn ('pgis_garden','the_geom');
+	SELECT DropGeometryTable ('pgis_garden');
+COMMIT;
+SELECT 'create,insert,drop Test: Start Testing Multi/POINTM'; 
+	
+	
+	
+SELECT 'create,insert,drop Test: Start Testing Multi/LINESTRINGM'; 
+BEGIN;
+	CREATE TABLE pgis_garden (gid serial);
+	SELECT AddGeometryColumn('pgis_garden','the_geom',ST_SRID(the_geom),GeometryType(the_geom),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo limit 1;
+	SELECT AddGeometryColumn('pgis_garden','the_geom_multi',ST_SRID(the_geom),GeometryType(ST_Multi(the_geom)),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo limit 1;
+	INSERT INTO pgis_garden(the_geom, the_geom_multi)
+	SELECT the_geom, ST_Multi(the_geom)
+	FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo;
+	
+	SELECT UpdateGeometrySRID('pgis_garden', 'the_geom', 4269);
+	
+	SELECT DropGeometryColumn ('pgis_garden','the_geom');
+	SELECT DropGeometryTable ('pgis_garden');
+COMMIT;
+SELECT 'create,insert,drop Test: Start Testing Multi/LINESTRINGM'; 
+	
+	
+	
+SELECT 'create,insert,drop Test: Start Testing Multi/POLYGONM'; 
+BEGIN;
+	CREATE TABLE pgis_garden (gid serial);
+	SELECT AddGeometryColumn('pgis_garden','the_geom',ST_SRID(the_geom),GeometryType(the_geom),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo limit 1;
+	SELECT AddGeometryColumn('pgis_garden','the_geom_multi',ST_SRID(the_geom),GeometryType(ST_Multi(the_geom)),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo limit 1;
+	INSERT INTO pgis_garden(the_geom, the_geom_multi)
+	SELECT the_geom, ST_Multi(the_geom)
+	FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo;
+	
+	SELECT UpdateGeometrySRID('pgis_garden', 'the_geom', 4269);
+	
+	SELECT DropGeometryColumn ('pgis_garden','the_geom');
+	SELECT DropGeometryTable ('pgis_garden');
+COMMIT;
+SELECT 'create,insert,drop Test: Start Testing Multi/POLYGONM'; 
+	
+	
+	
+SELECT 'create,insert,drop Test: Start Testing Multi/POINT'; 
+BEGIN;
+	CREATE TABLE pgis_garden (gid serial);
+	SELECT AddGeometryColumn('pgis_garden','the_geom',ST_SRID(the_geom),GeometryType(the_geom),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo limit 1;
+	SELECT AddGeometryColumn('pgis_garden','the_geom_multi',ST_SRID(the_geom),GeometryType(ST_Multi(the_geom)),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo limit 1;
+	INSERT INTO pgis_garden(the_geom, the_geom_multi)
+	SELECT the_geom, ST_Multi(the_geom)
+	FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;
+	
+	SELECT UpdateGeometrySRID('pgis_garden', 'the_geom', 4269);
+	
+	SELECT DropGeometryColumn ('pgis_garden','the_geom');
+	SELECT DropGeometryTable ('pgis_garden');
+COMMIT;
+SELECT 'create,insert,drop Test: Start Testing Multi/POINT'; 
+	
+	
+	
+SELECT 'create,insert,drop Test: Start Testing Multi/LINESTRING'; 
+BEGIN;
+	CREATE TABLE pgis_garden (gid serial);
+	SELECT AddGeometryColumn('pgis_garden','the_geom',ST_SRID(the_geom),GeometryType(the_geom),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo limit 1;
+	SELECT AddGeometryColumn('pgis_garden','the_geom_multi',ST_SRID(the_geom),GeometryType(ST_Multi(the_geom)),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo limit 1;
+	INSERT INTO pgis_garden(the_geom, the_geom_multi)
+	SELECT the_geom, ST_Multi(the_geom)
+	FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;
+	
+	SELECT UpdateGeometrySRID('pgis_garden', 'the_geom', 4269);
+	
+	SELECT DropGeometryColumn ('pgis_garden','the_geom');
+	SELECT DropGeometryTable ('pgis_garden');
+COMMIT;
+SELECT 'create,insert,drop Test: Start Testing Multi/LINESTRING'; 
+	
+	
+	
+SELECT 'create,insert,drop Test: Start Testing Multi/POLYGON'; 
+BEGIN;
+	CREATE TABLE pgis_garden (gid serial);
+	SELECT AddGeometryColumn('pgis_garden','the_geom',ST_SRID(the_geom),GeometryType(the_geom),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo limit 1;
+	SELECT AddGeometryColumn('pgis_garden','the_geom_multi',ST_SRID(the_geom),GeometryType(ST_Multi(the_geom)),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo limit 1;
+	INSERT INTO pgis_garden(the_geom, the_geom_multi)
+	SELECT the_geom, ST_Multi(the_geom)
+	FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo;
+	
+	SELECT UpdateGeometrySRID('pgis_garden', 'the_geom', 4269);
+	
+	SELECT DropGeometryColumn ('pgis_garden','the_geom');
+	SELECT DropGeometryTable ('pgis_garden');
+COMMIT;
+SELECT 'create,insert,drop Test: Start Testing Multi/POLYGON'; 
+	
+	
+	
+SELECT 'create,insert,drop Test: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN;
+	CREATE TABLE pgis_garden (gid serial);
+	SELECT AddGeometryColumn('pgis_garden','the_geom',ST_SRID(the_geom),GeometryType(the_geom),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo limit 1;
+	SELECT AddGeometryColumn('pgis_garden','the_geom_multi',ST_SRID(the_geom),GeometryType(ST_Multi(the_geom)),ST_CoordDim(the_geom))
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo limit 1;
+	INSERT INTO pgis_garden(the_geom, the_geom_multi)
+	SELECT the_geom, ST_Multi(the_geom)
+	FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo;
+	
+	SELECT UpdateGeometrySRID('pgis_garden', 'the_geom', 4269);
+	
+	SELECT DropGeometryColumn ('pgis_garden','the_geom');
+	SELECT DropGeometryTable ('pgis_garden');
+COMMIT;
+SELECT 'create,insert,drop Test: Start Testing Multi/GEOMETRYCOLLECTION'; 
+	
+	
+	
+	SELECT 'AddAuth PointSet(auth_token): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT AddAuth('monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'AddAuth(auth_token)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'AddAuth LineSet(auth_token): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT AddAuth('monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'AddAuth(auth_token)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'AddAuth PolySet(auth_token): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT AddAuth('monkey')
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'AddAuth(auth_token)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'AddAuth PointMSet(auth_token): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT AddAuth('monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'AddAuth(auth_token)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'AddAuth LineMSet(auth_token): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT AddAuth('monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'AddAuth(auth_token)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'AddAuth PolygonMSet(auth_token): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT AddAuth('monkey')
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'AddAuth(auth_token)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'AddAuth PointSet3D(auth_token): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT AddAuth('monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'AddAuth(auth_token)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'AddAuth LineSet3D(auth_token): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT AddAuth('monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'AddAuth(auth_token)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'AddAuth PolygonSet3D(auth_token): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT AddAuth('monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'AddAuth(auth_token)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'AddAuth GCSet3D(auth_token): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT AddAuth('monkey')
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'AddAuth(auth_token)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'CheckAuth PointSet(a_schema_name, a_table_name, a_key_column_name): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_schema_name, a_table_name, a_key_column_name)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'CheckAuth LineSet(a_schema_name, a_table_name, a_key_column_name): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_schema_name, a_table_name, a_key_column_name)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'CheckAuth PolySet(a_schema_name, a_table_name, a_key_column_name): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_schema_name, a_table_name, a_key_column_name)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'CheckAuth PointMSet(a_schema_name, a_table_name, a_key_column_name): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_schema_name, a_table_name, a_key_column_name)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'CheckAuth LineMSet(a_schema_name, a_table_name, a_key_column_name): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_schema_name, a_table_name, a_key_column_name)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'CheckAuth PolygonMSet(a_schema_name, a_table_name, a_key_column_name): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_schema_name, a_table_name, a_key_column_name)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'CheckAuth PointSet3D(a_schema_name, a_table_name, a_key_column_name): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_schema_name, a_table_name, a_key_column_name)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'CheckAuth LineSet3D(a_schema_name, a_table_name, a_key_column_name): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_schema_name, a_table_name, a_key_column_name)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'CheckAuth PolygonSet3D(a_schema_name, a_table_name, a_key_column_name): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_schema_name, a_table_name, a_key_column_name)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'CheckAuth GCSet3D(a_schema_name, a_table_name, a_key_column_name): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_schema_name, a_table_name, a_key_column_name)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'CheckAuth PointSet(a_table_name, a_key_column_name): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_table_name, a_key_column_name)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'CheckAuth LineSet(a_table_name, a_key_column_name): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_table_name, a_key_column_name)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'CheckAuth PolySet(a_table_name, a_key_column_name): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_table_name, a_key_column_name)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'CheckAuth PointMSet(a_table_name, a_key_column_name): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_table_name, a_key_column_name)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'CheckAuth LineMSet(a_table_name, a_key_column_name): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_table_name, a_key_column_name)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'CheckAuth PolygonMSet(a_table_name, a_key_column_name): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_table_name, a_key_column_name)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'CheckAuth PointSet3D(a_table_name, a_key_column_name): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_table_name, a_key_column_name)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'CheckAuth LineSet3D(a_table_name, a_key_column_name): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_table_name, a_key_column_name)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'CheckAuth PolygonSet3D(a_table_name, a_key_column_name): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_table_name, a_key_column_name)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'CheckAuth GCSet3D(a_table_name, a_key_column_name): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT CheckAuth('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'CheckAuth(a_table_name, a_key_column_name)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'DisableLongTransactions PointSet(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT DisableLongTransactions()
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'DisableLongTransactions()  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'DisableLongTransactions LineSet(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT DisableLongTransactions()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'DisableLongTransactions()  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'DisableLongTransactions PolySet(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT DisableLongTransactions()
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'DisableLongTransactions()  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'DisableLongTransactions PointMSet(): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT DisableLongTransactions()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'DisableLongTransactions()  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'DisableLongTransactions LineMSet(): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT DisableLongTransactions()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'DisableLongTransactions()  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'DisableLongTransactions PolygonMSet(): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT DisableLongTransactions()
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'DisableLongTransactions()  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'DisableLongTransactions PointSet3D(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT DisableLongTransactions()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'DisableLongTransactions()  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'DisableLongTransactions LineSet3D(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT DisableLongTransactions()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'DisableLongTransactions()  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'DisableLongTransactions PolygonSet3D(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT DisableLongTransactions()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'DisableLongTransactions()  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'DisableLongTransactions GCSet3D(): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT DisableLongTransactions()
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'DisableLongTransactions()  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'EnableLongTransactions PointSet(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT EnableLongTransactions()
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'EnableLongTransactions()  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'EnableLongTransactions LineSet(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT EnableLongTransactions()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'EnableLongTransactions()  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'EnableLongTransactions PolySet(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT EnableLongTransactions()
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'EnableLongTransactions()  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'EnableLongTransactions PointMSet(): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT EnableLongTransactions()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'EnableLongTransactions()  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'EnableLongTransactions LineMSet(): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT EnableLongTransactions()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'EnableLongTransactions()  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'EnableLongTransactions PolygonMSet(): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT EnableLongTransactions()
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'EnableLongTransactions()  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'EnableLongTransactions PointSet3D(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT EnableLongTransactions()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'EnableLongTransactions()  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'EnableLongTransactions LineSet3D(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT EnableLongTransactions()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'EnableLongTransactions()  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'EnableLongTransactions PolygonSet3D(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT EnableLongTransactions()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'EnableLongTransactions()  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'EnableLongTransactions GCSet3D(): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT EnableLongTransactions()
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'EnableLongTransactions()  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'GeometryType PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'GeometryType(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'GeometryType LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'GeometryType(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'GeometryType PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'GeometryType(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'GeometryType PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'GeometryType(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'GeometryType LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'GeometryType(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'GeometryType PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'GeometryType(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'GeometryType PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'GeometryType(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'GeometryType LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'GeometryType(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'GeometryType PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'GeometryType(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'GeometryType GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'GeometryType(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'LockRow PointSet(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'LockRow LineSet(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'LockRow PolySet(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'LockRow PointMSet(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'LockRow LineMSet(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'LockRow PolygonMSet(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'LockRow PointSet3D(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'LockRow LineSet3D(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'LockRow PolygonSet3D(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'LockRow GCSet3D(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_schema_name, a_table_name, a_row_key, an_auth_token, expire_dt)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'LockRow PointSet(a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token, expire_dt)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'LockRow LineSet(a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token, expire_dt)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'LockRow PolySet(a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token, expire_dt)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'LockRow PointMSet(a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token, expire_dt)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'LockRow LineMSet(a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token, expire_dt)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'LockRow PolygonMSet(a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token, expire_dt)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'LockRow PointSet3D(a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token, expire_dt)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'LockRow LineSet3D(a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token, expire_dt)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'LockRow PolygonSet3D(a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token, expire_dt)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'LockRow GCSet3D(a_table_name, a_row_key, an_auth_token, expire_dt): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey', )
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token, expire_dt)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'LockRow PointSet(a_table_name, a_row_key, an_auth_token): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'LockRow LineSet(a_table_name, a_row_key, an_auth_token): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'LockRow PolySet(a_table_name, a_row_key, an_auth_token): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'LockRow PointMSet(a_table_name, a_row_key, an_auth_token): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'LockRow LineMSet(a_table_name, a_row_key, an_auth_token): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'LockRow PolygonMSet(a_table_name, a_row_key, an_auth_token): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'LockRow PointSet3D(a_table_name, a_row_key, an_auth_token): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'LockRow LineSet3D(a_table_name, a_row_key, an_auth_token): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'LockRow PolygonSet3D(a_table_name, a_row_key, an_auth_token): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'LockRow GCSet3D(a_table_name, a_row_key, an_auth_token): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT LockRow('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'LockRow(a_table_name, a_row_key, an_auth_token)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'PostGIS_Full_Version PointSet(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Full_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Full_Version()  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Full_Version LineSet(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Full_Version()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Full_Version()  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Full_Version PolySet(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Full_Version()
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Full_Version()  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Full_Version PointMSet(): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Full_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Full_Version()  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'PostGIS_Full_Version LineMSet(): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Full_Version()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Full_Version()  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'PostGIS_Full_Version PolygonMSet(): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Full_Version()
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Full_Version()  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'PostGIS_Full_Version PointSet3D(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Full_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Full_Version()  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Full_Version LineSet3D(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Full_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Full_Version()  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Full_Version PolygonSet3D(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Full_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Full_Version()  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Full_Version GCSet3D(): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Full_Version()
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Full_Version()  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'PostGIS_GEOS_Version PointSet(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_GEOS_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_GEOS_Version()  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_GEOS_Version LineSet(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_GEOS_Version()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_GEOS_Version()  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_GEOS_Version PolySet(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_GEOS_Version()
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_GEOS_Version()  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_GEOS_Version PointMSet(): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_GEOS_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_GEOS_Version()  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'PostGIS_GEOS_Version LineMSet(): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_GEOS_Version()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_GEOS_Version()  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'PostGIS_GEOS_Version PolygonMSet(): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_GEOS_Version()
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_GEOS_Version()  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'PostGIS_GEOS_Version PointSet3D(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_GEOS_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_GEOS_Version()  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_GEOS_Version LineSet3D(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_GEOS_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_GEOS_Version()  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_GEOS_Version PolygonSet3D(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_GEOS_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_GEOS_Version()  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_GEOS_Version GCSet3D(): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT PostGIS_GEOS_Version()
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_GEOS_Version()  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Build_Date PointSet(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Build_Date()
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Build_Date()  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Build_Date LineSet(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Build_Date()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Build_Date()  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Build_Date PolySet(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Build_Date()
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Build_Date()  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Build_Date PointMSet(): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Build_Date()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Build_Date()  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Build_Date LineMSet(): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Build_Date()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Build_Date()  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Build_Date PolygonMSet(): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Build_Date()
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Build_Date()  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Build_Date PointSet3D(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Build_Date()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Build_Date()  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Build_Date LineSet3D(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Build_Date()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Build_Date()  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Build_Date PolygonSet3D(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Build_Date()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Build_Date()  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Build_Date GCSet3D(): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Build_Date()
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Build_Date()  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Version PointSet(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Version()  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Version LineSet(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Version()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Version()  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Version PolySet(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Version()
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Version()  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Version PointMSet(): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Version()  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Version LineMSet(): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Version()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Version()  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Version PolygonMSet(): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Version()
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Version()  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Version PointSet3D(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Version()  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Version LineSet3D(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Version()  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Version PolygonSet3D(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Version()  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Lib_Version GCSet3D(): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Lib_Version()
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Lib_Version()  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'PostGIS_PROJ_Version PointSet(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_PROJ_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_PROJ_Version()  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_PROJ_Version LineSet(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_PROJ_Version()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_PROJ_Version()  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_PROJ_Version PolySet(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_PROJ_Version()
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_PROJ_Version()  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_PROJ_Version PointMSet(): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_PROJ_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_PROJ_Version()  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'PostGIS_PROJ_Version LineMSet(): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_PROJ_Version()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_PROJ_Version()  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'PostGIS_PROJ_Version PolygonMSet(): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_PROJ_Version()
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_PROJ_Version()  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'PostGIS_PROJ_Version PointSet3D(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_PROJ_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_PROJ_Version()  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_PROJ_Version LineSet3D(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_PROJ_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_PROJ_Version()  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_PROJ_Version PolygonSet3D(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_PROJ_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_PROJ_Version()  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_PROJ_Version GCSet3D(): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT PostGIS_PROJ_Version()
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_PROJ_Version()  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Build_Date PointSet(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Build_Date()
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Build_Date()  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Build_Date LineSet(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Build_Date()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Build_Date()  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Build_Date PolySet(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Build_Date()
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Build_Date()  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Build_Date PointMSet(): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Build_Date()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Build_Date()  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Build_Date LineMSet(): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Build_Date()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Build_Date()  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Build_Date PolygonMSet(): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Build_Date()
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Build_Date()  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Build_Date PointSet3D(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Build_Date()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Build_Date()  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Build_Date LineSet3D(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Build_Date()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Build_Date()  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Build_Date PolygonSet3D(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Build_Date()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Build_Date()  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Build_Date GCSet3D(): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Build_Date()
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Build_Date()  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Installed PointSet(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Installed()
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Installed()  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Installed LineSet(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Installed()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Installed()  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Installed PolySet(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Installed()
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Installed()  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Installed PointMSet(): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Installed()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Installed()  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Installed LineMSet(): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Installed()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Installed()  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Installed PolygonMSet(): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Installed()
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Installed()  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Installed PointSet3D(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Installed()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Installed()  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Installed LineSet3D(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Installed()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Installed()  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Installed PolygonSet3D(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Installed()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Installed()  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Installed GCSet3D(): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Installed()
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Installed()  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Released PointSet(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Released()
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Released()  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Released LineSet(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Released()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Released()  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Released PolySet(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Released()
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Released()  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Released PointMSet(): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Released()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Released()  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Released LineMSet(): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Released()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Released()  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Released PolygonMSet(): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Released()
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Released()  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Released PointSet3D(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Released()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Released()  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Released LineSet3D(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Released()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Released()  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Released PolygonSet3D(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Released()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Released()  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Scripts_Released GCSet3D(): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Scripts_Released()
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Scripts_Released()  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'PostGIS_Uses_Stats PointSet(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Uses_Stats()
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Uses_Stats()  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Uses_Stats LineSet(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Uses_Stats()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Uses_Stats()  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Uses_Stats PolySet(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Uses_Stats()
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Uses_Stats()  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Uses_Stats PointMSet(): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Uses_Stats()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Uses_Stats()  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'PostGIS_Uses_Stats LineMSet(): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Uses_Stats()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Uses_Stats()  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'PostGIS_Uses_Stats PolygonMSet(): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Uses_Stats()
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Uses_Stats()  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'PostGIS_Uses_Stats PointSet3D(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Uses_Stats()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Uses_Stats()  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Uses_Stats LineSet3D(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Uses_Stats()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Uses_Stats()  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Uses_Stats PolygonSet3D(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Uses_Stats()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Uses_Stats()  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Uses_Stats GCSet3D(): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Uses_Stats()
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Uses_Stats()  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'PostGIS_Version PointSet(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Version()  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Version LineSet(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Version()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Version()  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Version PolySet(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Version()
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Version()  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Version PointMSet(): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Version()  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'PostGIS_Version LineMSet(): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Version()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Version()  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'PostGIS_Version PolygonMSet(): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Version()
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Version()  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'PostGIS_Version PointSet3D(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Version()  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'PostGIS_Version LineSet3D(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Version()  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'PostGIS_Version PolygonSet3D(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Version()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Version()  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'PostGIS_Version GCSet3D(): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT PostGIS_Version()
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'PostGIS_Version()  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'Probe_Geometry_Columns PointSet(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT Probe_Geometry_Columns()
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'Probe_Geometry_Columns()  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'Probe_Geometry_Columns LineSet(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT Probe_Geometry_Columns()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'Probe_Geometry_Columns()  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'Probe_Geometry_Columns PolySet(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT Probe_Geometry_Columns()
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'Probe_Geometry_Columns()  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'Probe_Geometry_Columns PointMSet(): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT Probe_Geometry_Columns()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'Probe_Geometry_Columns()  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'Probe_Geometry_Columns LineMSet(): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT Probe_Geometry_Columns()
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'Probe_Geometry_Columns()  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'Probe_Geometry_Columns PolygonMSet(): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT Probe_Geometry_Columns()
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'Probe_Geometry_Columns()  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'Probe_Geometry_Columns PointSet3D(): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT Probe_Geometry_Columns()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'Probe_Geometry_Columns()  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'Probe_Geometry_Columns LineSet3D(): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT Probe_Geometry_Columns()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'Probe_Geometry_Columns()  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'Probe_Geometry_Columns PolygonSet3D(): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT Probe_Geometry_Columns()
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'Probe_Geometry_Columns()  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'Probe_Geometry_Columns GCSet3D(): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT Probe_Geometry_Columns()
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'Probe_Geometry_Columns()  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Accum PointSet: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Accum(the_geom),
+				ST_Accum(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo;  
+	COMMIT;
+	SELECT 'ST_Accum PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Accum LineSet: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Accum(the_geom),
+				ST_Accum(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_Accum LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Accum PolySet: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Accum(the_geom),
+				ST_Accum(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo;  
+	COMMIT;
+	SELECT 'ST_Accum PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Accum PointMSet: Start Testing Multi/POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Accum(the_geom),
+				ST_Accum(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Accum PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Accum LineMSet: Start Testing Multi/LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Accum(the_geom),
+				ST_Accum(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_Accum LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Accum PolygonMSet: Start Testing Multi/POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Accum(the_geom),
+				ST_Accum(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Accum PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Accum PointSet3D: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Accum(the_geom),
+				ST_Accum(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Accum PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Accum LineSet3D: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Accum(the_geom),
+				ST_Accum(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Accum LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Accum PolygonSet3D: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Accum(the_geom),
+				ST_Accum(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Accum PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Accum GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Accum(the_geom),
+				ST_Accum(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Accum GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AddBBox PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddBBox(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AddBBox LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddBBox(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AddBBox PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddBBox(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AddBBox PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddBBox(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AddBBox LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddBBox(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AddBBox PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddBBox(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AddBBox PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddBBox(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AddBBox LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddBBox(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AddBBox PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddBBox(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AddBBox GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddBBox(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_AddPoint PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_AddPoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_AddPoint PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_AddPoint LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_AddPoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_AddPoint LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_AddPoint PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_AddPoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_AddPoint PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_AddPoint PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_AddPoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_AddPoint PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_AddPoint LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_AddPoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_AddPoint LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_AddPoint PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_AddPoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_AddPoint PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_AddPoint PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_AddPoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_AddPoint PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_AddPoint LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_AddPoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_AddPoint LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_AddPoint PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_AddPoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_AddPoint PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_AddPoint GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_AddPoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_AddPoint GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AddPoint PointSet(linestring, point, position): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddPoint(linestring, point, position)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AddPoint LineSet(linestring, point, position): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddPoint(linestring, point, position)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AddPoint PolySet(linestring, point, position): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddPoint(linestring, point, position)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AddPoint PointMSet(linestring, point, position): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddPoint(linestring, point, position)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AddPoint LineMSet(linestring, point, position): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddPoint(linestring, point, position)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AddPoint PolygonMSet(linestring, point, position): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddPoint(linestring, point, position)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AddPoint PointSet3D(linestring, point, position): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddPoint(linestring, point, position)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AddPoint LineSet3D(linestring, point, position): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddPoint(linestring, point, position)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AddPoint PolygonSet3D(linestring, point, position): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddPoint(linestring, point, position)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AddPoint GCSet3D(linestring, point, position): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_AddPoint(foo1.the_geom, foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AddPoint(linestring, point, position)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Affine PointSet(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Affine LineSet(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Affine PolySet(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Affine PointMSet(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Affine LineMSet(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Affine PolygonMSet(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Affine PointSet3D(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Affine LineSet3D(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Affine PolygonSet3D(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Affine GCSet3D(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Affine PointSet(geomA, a, b, d, e, xoff, yoff): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, d, e, xoff, yoff)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Affine LineSet(geomA, a, b, d, e, xoff, yoff): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, d, e, xoff, yoff)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Affine PolySet(geomA, a, b, d, e, xoff, yoff): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, d, e, xoff, yoff)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Affine PointMSet(geomA, a, b, d, e, xoff, yoff): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, d, e, xoff, yoff)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Affine LineMSet(geomA, a, b, d, e, xoff, yoff): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, d, e, xoff, yoff)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Affine PolygonMSet(geomA, a, b, d, e, xoff, yoff): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, d, e, xoff, yoff)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Affine PointSet3D(geomA, a, b, d, e, xoff, yoff): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, d, e, xoff, yoff)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Affine LineSet3D(geomA, a, b, d, e, xoff, yoff): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, d, e, xoff, yoff)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Affine PolygonSet3D(geomA, a, b, d, e, xoff, yoff): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, d, e, xoff, yoff)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Affine GCSet3D(geomA, a, b, d, e, xoff, yoff): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Affine(foo1.the_geom, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Affine(geomA, a, b, d, e, xoff, yoff)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Area PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Area(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Area(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Area LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Area(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Area(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Area PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Area(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Area(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Area PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Area(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Area(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Area LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Area(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Area(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Area PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Area(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Area(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Area PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Area(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Area(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Area LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Area(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Area(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Area PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Area(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Area(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Area GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Area(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Area(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsBinary PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsBinary LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsBinary PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsBinary PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsBinary LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsBinary PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsBinary PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsBinary LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsBinary PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsBinary GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsBinary PointSet(g1, NDR_or_XDR): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1, NDR_or_XDR)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsBinary LineSet(g1, NDR_or_XDR): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1, NDR_or_XDR)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsBinary PolySet(g1, NDR_or_XDR): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1, NDR_or_XDR)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsBinary PointMSet(g1, NDR_or_XDR): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1, NDR_or_XDR)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsBinary LineMSet(g1, NDR_or_XDR): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1, NDR_or_XDR)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsBinary PolygonMSet(g1, NDR_or_XDR): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1, NDR_or_XDR)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsBinary PointSet3D(g1, NDR_or_XDR): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1, NDR_or_XDR)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsBinary LineSet3D(g1, NDR_or_XDR): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1, NDR_or_XDR)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsBinary PolygonSet3D(g1, NDR_or_XDR): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1, NDR_or_XDR)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsBinary GCSet3D(g1, NDR_or_XDR): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsBinary(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsBinary(g1, NDR_or_XDR)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsEWKB PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsEWKB LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsEWKB PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsEWKB PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsEWKB LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsEWKB PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsEWKB PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsEWKB LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsEWKB PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsEWKB GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsEWKB PointSet(g1, NDR_or_XDR): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1, NDR_or_XDR)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsEWKB LineSet(g1, NDR_or_XDR): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1, NDR_or_XDR)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsEWKB PolySet(g1, NDR_or_XDR): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1, NDR_or_XDR)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsEWKB PointMSet(g1, NDR_or_XDR): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1, NDR_or_XDR)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsEWKB LineMSet(g1, NDR_or_XDR): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1, NDR_or_XDR)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsEWKB PolygonMSet(g1, NDR_or_XDR): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1, NDR_or_XDR)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsEWKB PointSet3D(g1, NDR_or_XDR): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1, NDR_or_XDR)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsEWKB LineSet3D(g1, NDR_or_XDR): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1, NDR_or_XDR)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsEWKB PolygonSet3D(g1, NDR_or_XDR): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1, NDR_or_XDR)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsEWKB GCSet3D(g1, NDR_or_XDR): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKB(g1, NDR_or_XDR)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsEWKT PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKT(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsEWKT LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKT(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsEWKT PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKT(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsEWKT PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKT(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsEWKT LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKT(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsEWKT PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKT(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsEWKT PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKT(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsEWKT LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKT(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsEWKT PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKT(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsEWKT GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsEWKT(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointSet(g1, max_decimal_digits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineSet(g1, max_decimal_digits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolySet(g1, max_decimal_digits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointMSet(g1, max_decimal_digits): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineMSet(g1, max_decimal_digits): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolygonMSet(g1, max_decimal_digits): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointSet3D(g1, max_decimal_digits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineSet3D(g1, max_decimal_digits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolygonSet3D(g1, max_decimal_digits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON GCSet3D(g1, max_decimal_digits): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointSet(g1, max_decimal_digits, options): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits, options)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineSet(g1, max_decimal_digits, options): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits, options)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolySet(g1, max_decimal_digits, options): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits, options)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointMSet(g1, max_decimal_digits, options): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits, options)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineMSet(g1, max_decimal_digits, options): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits, options)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolygonMSet(g1, max_decimal_digits, options): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits, options)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointSet3D(g1, max_decimal_digits, options): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits, options)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineSet3D(g1, max_decimal_digits, options): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits, options)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolygonSet3D(g1, max_decimal_digits, options): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits, options)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON GCSet3D(g1, max_decimal_digits, options): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(g1, max_decimal_digits, options)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointSet(version, g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineSet(version, g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolySet(version, g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointMSet(version, g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineMSet(version, g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolygonMSet(version, g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointSet3D(version, g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineSet3D(version, g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolygonSet3D(version, g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON GCSet3D(version, g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointSet(version, g1, max_decimal_digits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineSet(version, g1, max_decimal_digits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolySet(version, g1, max_decimal_digits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointMSet(version, g1, max_decimal_digits): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineMSet(version, g1, max_decimal_digits): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolygonMSet(version, g1, max_decimal_digits): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointSet3D(version, g1, max_decimal_digits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineSet3D(version, g1, max_decimal_digits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolygonSet3D(version, g1, max_decimal_digits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON GCSet3D(version, g1, max_decimal_digits): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointSet(version, g1, max_decimal_digits, options): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits, options)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineSet(version, g1, max_decimal_digits, options): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits, options)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolySet(version, g1, max_decimal_digits, options): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits, options)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointMSet(version, g1, max_decimal_digits, options): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits, options)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineMSet(version, g1, max_decimal_digits, options): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits, options)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolygonMSet(version, g1, max_decimal_digits, options): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits, options)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PointSet3D(version, g1, max_decimal_digits, options): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits, options)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON LineSet3D(version, g1, max_decimal_digits, options): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits, options)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON PolygonSet3D(version, g1, max_decimal_digits, options): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits, options)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGeoJSON GCSet3D(version, g1, max_decimal_digits, options): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsGeoJSON(2, foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGeoJSON(version, g1, max_decimal_digits, options)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsGML PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGML LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGML PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGML PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsGML LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsGML PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsGML PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGML LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGML PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGML GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsGML PointSet(g1, max_num_decimal_digits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1, max_num_decimal_digits)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGML LineSet(g1, max_num_decimal_digits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1, max_num_decimal_digits)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGML PolySet(g1, max_num_decimal_digits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1, max_num_decimal_digits)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGML PointMSet(g1, max_num_decimal_digits): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1, max_num_decimal_digits)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsGML LineMSet(g1, max_num_decimal_digits): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1, max_num_decimal_digits)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsGML PolygonMSet(g1, max_num_decimal_digits): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1, max_num_decimal_digits)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsGML PointSet3D(g1, max_num_decimal_digits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1, max_num_decimal_digits)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGML LineSet3D(g1, max_num_decimal_digits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1, max_num_decimal_digits)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGML PolygonSet3D(g1, max_num_decimal_digits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1, max_num_decimal_digits)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGML GCSet3D(g1, max_num_decimal_digits): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(g1, max_num_decimal_digits)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsGML PointSet(version, g1, max_num_decimal_digits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1, max_num_decimal_digits)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGML LineSet(version, g1, max_num_decimal_digits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1, max_num_decimal_digits)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGML PolySet(version, g1, max_num_decimal_digits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1, max_num_decimal_digits)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGML PointMSet(version, g1, max_num_decimal_digits): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1, max_num_decimal_digits)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsGML LineMSet(version, g1, max_num_decimal_digits): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1, max_num_decimal_digits)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsGML PolygonMSet(version, g1, max_num_decimal_digits): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1, max_num_decimal_digits)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsGML PointSet3D(version, g1, max_num_decimal_digits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1, max_num_decimal_digits)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGML LineSet3D(version, g1, max_num_decimal_digits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1, max_num_decimal_digits)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGML PolygonSet3D(version, g1, max_num_decimal_digits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1, max_num_decimal_digits)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGML GCSet3D(version, g1, max_num_decimal_digits): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1, max_num_decimal_digits)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsGML PointSet(version, g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGML LineSet(version, g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGML PolySet(version, g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGML PointMSet(version, g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsGML LineMSet(version, g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsGML PolygonMSet(version, g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsGML PointSet3D(version, g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsGML LineSet3D(version, g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsGML PolygonSet3D(version, g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsGML GCSet3D(version, g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsGML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsGML(version, g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB PointSet(g1, NDRorXDR): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1, NDRorXDR)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB LineSet(g1, NDRorXDR): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1, NDRorXDR)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB PolySet(g1, NDRorXDR): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1, NDRorXDR)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB PointMSet(g1, NDRorXDR): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1, NDRorXDR)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB LineMSet(g1, NDRorXDR): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1, NDRorXDR)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB PolygonMSet(g1, NDRorXDR): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1, NDRorXDR)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB PointSet3D(g1, NDRorXDR): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1, NDRorXDR)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB LineSet3D(g1, NDRorXDR): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1, NDRorXDR)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB PolygonSet3D(g1, NDRorXDR): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1, NDRorXDR)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB GCSet3D(g1, NDRorXDR): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom,  
+						'XDR'
+					)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1, NDRorXDR)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsHEXEWKB GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsHEXEWKB(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsHEXEWKB(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsKML PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsKML LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsKML PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsKML PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsKML LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsKML PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsKML PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsKML LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsKML PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsKML GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsKML PointSet(g1, max_sig_digits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1, max_sig_digits)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsKML LineSet(g1, max_sig_digits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1, max_sig_digits)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsKML PolySet(g1, max_sig_digits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1, max_sig_digits)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsKML PointMSet(g1, max_sig_digits): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1, max_sig_digits)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsKML LineMSet(g1, max_sig_digits): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1, max_sig_digits)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsKML PolygonMSet(g1, max_sig_digits): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1, max_sig_digits)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsKML PointSet3D(g1, max_sig_digits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1, max_sig_digits)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsKML LineSet3D(g1, max_sig_digits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1, max_sig_digits)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsKML PolygonSet3D(g1, max_sig_digits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1, max_sig_digits)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsKML GCSet3D(g1, max_sig_digits): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(g1, max_sig_digits)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsKML PointSet(version, geom1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsKML LineSet(version, geom1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsKML PolySet(version, geom1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsKML PointMSet(version, geom1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsKML LineMSet(version, geom1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsKML PolygonMSet(version, geom1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsKML PointSet3D(version, geom1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsKML LineSet3D(version, geom1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsKML PolygonSet3D(version, geom1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsKML GCSet3D(version, geom1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsKML PointSet(version, geom1, max_sig_digits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1, max_sig_digits)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsKML LineSet(version, geom1, max_sig_digits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1, max_sig_digits)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsKML PolySet(version, geom1, max_sig_digits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1, max_sig_digits)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsKML PointMSet(version, geom1, max_sig_digits): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1, max_sig_digits)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsKML LineMSet(version, geom1, max_sig_digits): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1, max_sig_digits)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsKML PolygonMSet(version, geom1, max_sig_digits): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1, max_sig_digits)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsKML PointSet3D(version, geom1, max_sig_digits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1, max_sig_digits)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsKML LineSet3D(version, geom1, max_sig_digits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1, max_sig_digits)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsKML PolygonSet3D(version, geom1, max_sig_digits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1, max_sig_digits)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsKML GCSet3D(version, geom1, max_sig_digits): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsKML(2, foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsKML(version, geom1, max_sig_digits)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsSVG PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsSVG LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsSVG PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsSVG PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsSVG LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsSVG PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsSVG PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsSVG LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsSVG PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsSVG GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsSVG PointSet(g1, rel): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsSVG LineSet(g1, rel): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsSVG PolySet(g1, rel): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsSVG PointMSet(g1, rel): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsSVG LineMSet(g1, rel): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsSVG PolygonMSet(g1, rel): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsSVG PointSet3D(g1, rel): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsSVG LineSet3D(g1, rel): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsSVG PolygonSet3D(g1, rel): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsSVG GCSet3D(g1, rel): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsSVG PointSet(g1, rel, maxdecimaldigits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel, maxdecimaldigits)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsSVG LineSet(g1, rel, maxdecimaldigits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel, maxdecimaldigits)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsSVG PolySet(g1, rel, maxdecimaldigits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel, maxdecimaldigits)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsSVG PointMSet(g1, rel, maxdecimaldigits): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel, maxdecimaldigits)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsSVG LineMSet(g1, rel, maxdecimaldigits): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel, maxdecimaldigits)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsSVG PolygonMSet(g1, rel, maxdecimaldigits): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel, maxdecimaldigits)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsSVG PointSet3D(g1, rel, maxdecimaldigits): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel, maxdecimaldigits)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsSVG LineSet3D(g1, rel, maxdecimaldigits): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel, maxdecimaldigits)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsSVG PolygonSet3D(g1, rel, maxdecimaldigits): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel, maxdecimaldigits)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsSVG GCSet3D(g1, rel, maxdecimaldigits): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsSVG(foo1.the_geom, 5, 5)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsSVG(g1, rel, maxdecimaldigits)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_AsText PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsText(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsText(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsText LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsText(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsText(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsText PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsText(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsText(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsText PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsText(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsText(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_AsText LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsText(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsText(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_AsText PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsText(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsText(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_AsText PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsText(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsText(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_AsText LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsText(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsText(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_AsText PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsText(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsText(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_AsText GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsText(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_AsText(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Azimuth PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Azimuth(foo1.the_geom, foo2.the_geom),
+				ST_Azimuth(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Azimuth PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Azimuth LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Azimuth(foo1.the_geom, foo2.the_geom),
+				ST_Azimuth(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Azimuth LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Azimuth PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Azimuth(foo1.the_geom, foo2.the_geom),
+				ST_Azimuth(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Azimuth PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Azimuth PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Azimuth(foo1.the_geom, foo2.the_geom),
+				ST_Azimuth(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Azimuth PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Azimuth LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Azimuth(foo1.the_geom, foo2.the_geom),
+				ST_Azimuth(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Azimuth LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Azimuth PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Azimuth(foo1.the_geom, foo2.the_geom),
+				ST_Azimuth(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Azimuth PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Azimuth PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Azimuth(foo1.the_geom, foo2.the_geom),
+				ST_Azimuth(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Azimuth PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Azimuth LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Azimuth(foo1.the_geom, foo2.the_geom),
+				ST_Azimuth(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Azimuth LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Azimuth PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Azimuth(foo1.the_geom, foo2.the_geom),
+				ST_Azimuth(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Azimuth PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Azimuth GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Azimuth(foo1.the_geom, foo2.the_geom),
+				ST_Azimuth(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Azimuth GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_BdMPolyFromText PointSet(WKT, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdMPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdMPolyFromText(WKT, srid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_BdMPolyFromText LineSet(WKT, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdMPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdMPolyFromText(WKT, srid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_BdMPolyFromText PolySet(WKT, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdMPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdMPolyFromText(WKT, srid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_BdMPolyFromText PointMSet(WKT, srid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdMPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdMPolyFromText(WKT, srid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_BdMPolyFromText LineMSet(WKT, srid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdMPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdMPolyFromText(WKT, srid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_BdMPolyFromText PolygonMSet(WKT, srid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdMPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdMPolyFromText(WKT, srid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_BdMPolyFromText PointSet3D(WKT, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdMPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdMPolyFromText(WKT, srid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_BdMPolyFromText LineSet3D(WKT, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdMPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdMPolyFromText(WKT, srid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_BdMPolyFromText PolygonSet3D(WKT, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdMPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdMPolyFromText(WKT, srid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_BdMPolyFromText GCSet3D(WKT, srid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdMPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdMPolyFromText(WKT, srid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_BdPolyFromText PointSet(WKT, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdPolyFromText(WKT, srid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_BdPolyFromText LineSet(WKT, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdPolyFromText(WKT, srid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_BdPolyFromText PolySet(WKT, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdPolyFromText(WKT, srid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_BdPolyFromText PointMSet(WKT, srid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdPolyFromText(WKT, srid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_BdPolyFromText LineMSet(WKT, srid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdPolyFromText(WKT, srid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_BdPolyFromText PolygonMSet(WKT, srid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdPolyFromText(WKT, srid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_BdPolyFromText PointSet3D(WKT, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdPolyFromText(WKT, srid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_BdPolyFromText LineSet3D(WKT, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdPolyFromText(WKT, srid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_BdPolyFromText PolygonSet3D(WKT, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdPolyFromText(WKT, srid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_BdPolyFromText GCSet3D(WKT, srid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_BdPolyFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BdPolyFromText(WKT, srid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Boundary PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Boundary(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Boundary(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Boundary LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Boundary(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Boundary(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Boundary PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Boundary(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Boundary(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Boundary PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Boundary(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Boundary(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Boundary LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Boundary(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Boundary(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Boundary PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Boundary(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Boundary(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Boundary PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Boundary(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Boundary(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Boundary LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Boundary(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Boundary(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Boundary PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Boundary(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Boundary(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Boundary GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Boundary(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Boundary(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Box2D PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Box2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box2D(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Box2D LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Box2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box2D(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Box2D PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Box2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box2D(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Box2D PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Box2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box2D(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Box2D LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Box2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box2D(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Box2D PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Box2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box2D(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Box2D PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Box2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box2D(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Box2D LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Box2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box2D(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Box2D PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Box2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box2D(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Box2D GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Box2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box2D(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Box3D PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Box3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box3D(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Box3D LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Box3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box3D(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Box3D PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Box3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box3D(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Box3D PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Box3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box3D(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Box3D LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Box3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box3D(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Box3D PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Box3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box3D(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Box3D PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Box3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box3D(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Box3D LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Box3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box3D(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Box3D PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Box3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box3D(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Box3D GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Box3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Box3D(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Buffer PointSet(g1, radius_of_buffer): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Buffer LineSet(g1, radius_of_buffer): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Buffer PolySet(g1, radius_of_buffer): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Buffer PointMSet(g1, radius_of_buffer): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Buffer LineMSet(g1, radius_of_buffer): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Buffer PolygonMSet(g1, radius_of_buffer): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Buffer PointSet3D(g1, radius_of_buffer): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Buffer LineSet3D(g1, radius_of_buffer): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Buffer PolygonSet3D(g1, radius_of_buffer): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Buffer GCSet3D(g1, radius_of_buffer): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Buffer PointSet(g1, radius_of_buffer, num_seg_quarter_circle): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer, num_seg_quarter_circle)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Buffer LineSet(g1, radius_of_buffer, num_seg_quarter_circle): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5, 5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer, num_seg_quarter_circle)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Buffer PolySet(g1, radius_of_buffer, num_seg_quarter_circle): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5, 5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer, num_seg_quarter_circle)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Buffer PointMSet(g1, radius_of_buffer, num_seg_quarter_circle): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer, num_seg_quarter_circle)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Buffer LineMSet(g1, radius_of_buffer, num_seg_quarter_circle): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5, 5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer, num_seg_quarter_circle)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Buffer PolygonMSet(g1, radius_of_buffer, num_seg_quarter_circle): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5, 5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer, num_seg_quarter_circle)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Buffer PointSet3D(g1, radius_of_buffer, num_seg_quarter_circle): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer, num_seg_quarter_circle)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Buffer LineSet3D(g1, radius_of_buffer, num_seg_quarter_circle): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer, num_seg_quarter_circle)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Buffer PolygonSet3D(g1, radius_of_buffer, num_seg_quarter_circle): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer, num_seg_quarter_circle)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Buffer GCSet3D(g1, radius_of_buffer, num_seg_quarter_circle): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Buffer(foo1.the_geom, 0.5, 5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Buffer(g1, radius_of_buffer, num_seg_quarter_circle)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_BuildArea PointSet(A): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_BuildArea(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BuildArea(A)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_BuildArea LineSet(A): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_BuildArea(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BuildArea(A)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_BuildArea PolySet(A): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_BuildArea(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BuildArea(A)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_BuildArea PointMSet(A): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_BuildArea(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BuildArea(A)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_BuildArea LineMSet(A): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_BuildArea(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BuildArea(A)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_BuildArea PolygonMSet(A): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_BuildArea(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BuildArea(A)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_BuildArea PointSet3D(A): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_BuildArea(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BuildArea(A)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_BuildArea LineSet3D(A): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_BuildArea(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BuildArea(A)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_BuildArea PolygonSet3D(A): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_BuildArea(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BuildArea(A)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_BuildArea GCSet3D(A): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_BuildArea(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_BuildArea(A)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Centroid PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Centroid(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Centroid(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Centroid LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Centroid(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Centroid(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Centroid PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Centroid(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Centroid(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Centroid PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Centroid(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Centroid(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Centroid LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Centroid(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Centroid(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Centroid PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Centroid(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Centroid(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Centroid PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Centroid(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Centroid(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Centroid LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Centroid(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Centroid(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Centroid PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Centroid(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Centroid(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Centroid GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Centroid(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Centroid(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Collect PointSet: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Collect(the_geom)),
+		ST_AsEWKT(ST_Collect(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo;  
+	COMMIT;
+	SELECT 'ST_Collect PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Collect LineSet: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Collect(the_geom)),
+		ST_AsEWKT(ST_Collect(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_Collect LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Collect PolySet: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Collect(the_geom)),
+		ST_AsEWKT(ST_Collect(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo;  
+	COMMIT;
+	SELECT 'ST_Collect PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Collect PointMSet: Start Testing Multi/POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Collect(the_geom)),
+		ST_AsEWKT(ST_Collect(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Collect PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Collect LineMSet: Start Testing Multi/LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Collect(the_geom)),
+		ST_AsEWKT(ST_Collect(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_Collect LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Collect PolygonMSet: Start Testing Multi/POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Collect(the_geom)),
+		ST_AsEWKT(ST_Collect(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Collect PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Collect PointSet3D: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Collect(the_geom)),
+		ST_AsEWKT(ST_Collect(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Collect PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Collect LineSet3D: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Collect(the_geom)),
+		ST_AsEWKT(ST_Collect(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Collect LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Collect PolygonSet3D: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Collect(the_geom)),
+		ST_AsEWKT(ST_Collect(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Collect PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Collect GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Collect(the_geom)),
+		ST_AsEWKT(ST_Collect(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Collect GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Collect PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Collect(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Collect(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Collect PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Collect LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Collect(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Collect(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Collect LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Collect PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Collect(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Collect(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Collect PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Collect PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Collect(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Collect(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Collect PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Collect LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Collect(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Collect(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Collect LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Collect PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Collect(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Collect(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Collect PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Collect PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Collect(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Collect(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Collect PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Collect LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Collect(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Collect(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Collect LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Collect PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Collect(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Collect(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Collect PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Collect GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Collect(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Collect(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Collect GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Contains PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Contains(foo1.the_geom, foo2.the_geom),
+				ST_Contains(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Contains PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Contains LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Contains(foo1.the_geom, foo2.the_geom),
+				ST_Contains(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Contains LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Contains PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Contains(foo1.the_geom, foo2.the_geom),
+				ST_Contains(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Contains PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Contains PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Contains(foo1.the_geom, foo2.the_geom),
+				ST_Contains(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Contains PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Contains LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Contains(foo1.the_geom, foo2.the_geom),
+				ST_Contains(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Contains LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Contains PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Contains(foo1.the_geom, foo2.the_geom),
+				ST_Contains(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Contains PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Contains PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Contains(foo1.the_geom, foo2.the_geom),
+				ST_Contains(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Contains PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Contains LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Contains(foo1.the_geom, foo2.the_geom),
+				ST_Contains(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Contains LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Contains PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Contains(foo1.the_geom, foo2.the_geom),
+				ST_Contains(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Contains PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Contains GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Contains(foo1.the_geom, foo2.the_geom),
+				ST_Contains(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Contains GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_ConvexHull PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_ConvexHull(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ConvexHull(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_ConvexHull LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_ConvexHull(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ConvexHull(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_ConvexHull PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_ConvexHull(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ConvexHull(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_ConvexHull PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_ConvexHull(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ConvexHull(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_ConvexHull LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_ConvexHull(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ConvexHull(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_ConvexHull PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_ConvexHull(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ConvexHull(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_ConvexHull PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_ConvexHull(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ConvexHull(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_ConvexHull LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_ConvexHull(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ConvexHull(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_ConvexHull PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_ConvexHull(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ConvexHull(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_ConvexHull GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_ConvexHull(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ConvexHull(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_CoordDim PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_CoordDim(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_CoordDim(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_CoordDim LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_CoordDim(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_CoordDim(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_CoordDim PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_CoordDim(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_CoordDim(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_CoordDim PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_CoordDim(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_CoordDim(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_CoordDim LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_CoordDim(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_CoordDim(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_CoordDim PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_CoordDim(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_CoordDim(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_CoordDim PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_CoordDim(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_CoordDim(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_CoordDim LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_CoordDim(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_CoordDim(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_CoordDim PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_CoordDim(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_CoordDim(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_CoordDim GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_CoordDim(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_CoordDim(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_CoveredBy PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_CoveredBy(foo1.the_geom, foo2.the_geom),
+				ST_CoveredBy(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_CoveredBy PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_CoveredBy LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_CoveredBy(foo1.the_geom, foo2.the_geom),
+				ST_CoveredBy(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_CoveredBy LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_CoveredBy PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_CoveredBy(foo1.the_geom, foo2.the_geom),
+				ST_CoveredBy(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_CoveredBy PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_CoveredBy PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_CoveredBy(foo1.the_geom, foo2.the_geom),
+				ST_CoveredBy(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_CoveredBy PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_CoveredBy LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_CoveredBy(foo1.the_geom, foo2.the_geom),
+				ST_CoveredBy(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_CoveredBy LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_CoveredBy PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_CoveredBy(foo1.the_geom, foo2.the_geom),
+				ST_CoveredBy(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_CoveredBy PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_CoveredBy PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_CoveredBy(foo1.the_geom, foo2.the_geom),
+				ST_CoveredBy(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_CoveredBy PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_CoveredBy LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_CoveredBy(foo1.the_geom, foo2.the_geom),
+				ST_CoveredBy(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_CoveredBy LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_CoveredBy PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_CoveredBy(foo1.the_geom, foo2.the_geom),
+				ST_CoveredBy(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_CoveredBy PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_CoveredBy GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_CoveredBy(foo1.the_geom, foo2.the_geom),
+				ST_CoveredBy(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_CoveredBy GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Covers PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Covers(foo1.the_geom, foo2.the_geom),
+				ST_Covers(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Covers PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Covers LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Covers(foo1.the_geom, foo2.the_geom),
+				ST_Covers(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Covers LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Covers PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Covers(foo1.the_geom, foo2.the_geom),
+				ST_Covers(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Covers PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Covers PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Covers(foo1.the_geom, foo2.the_geom),
+				ST_Covers(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Covers PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Covers LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Covers(foo1.the_geom, foo2.the_geom),
+				ST_Covers(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Covers LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Covers PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Covers(foo1.the_geom, foo2.the_geom),
+				ST_Covers(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Covers PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Covers PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Covers(foo1.the_geom, foo2.the_geom),
+				ST_Covers(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Covers PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Covers LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Covers(foo1.the_geom, foo2.the_geom),
+				ST_Covers(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Covers LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Covers PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Covers(foo1.the_geom, foo2.the_geom),
+				ST_Covers(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Covers PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Covers GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Covers(foo1.the_geom, foo2.the_geom),
+				ST_Covers(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Covers GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Crosses PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Crosses(foo1.the_geom, foo2.the_geom),
+				ST_Crosses(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Crosses PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Crosses LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Crosses(foo1.the_geom, foo2.the_geom),
+				ST_Crosses(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Crosses LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Crosses PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Crosses(foo1.the_geom, foo2.the_geom),
+				ST_Crosses(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Crosses PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Crosses PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Crosses(foo1.the_geom, foo2.the_geom),
+				ST_Crosses(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Crosses PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Crosses LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Crosses(foo1.the_geom, foo2.the_geom),
+				ST_Crosses(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Crosses LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Crosses PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Crosses(foo1.the_geom, foo2.the_geom),
+				ST_Crosses(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Crosses PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Crosses PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Crosses(foo1.the_geom, foo2.the_geom),
+				ST_Crosses(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Crosses PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Crosses LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Crosses(foo1.the_geom, foo2.the_geom),
+				ST_Crosses(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Crosses LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Crosses PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Crosses(foo1.the_geom, foo2.the_geom),
+				ST_Crosses(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Crosses PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Crosses GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Crosses(foo1.the_geom, foo2.the_geom),
+				ST_Crosses(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Crosses GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Difference PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Difference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Difference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Difference PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Difference LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Difference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Difference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Difference LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Difference PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Difference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Difference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Difference PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Difference PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Difference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Difference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Difference PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Difference LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Difference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Difference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Difference LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Difference PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Difference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Difference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Difference PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Difference PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Difference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Difference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Difference PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Difference LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Difference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Difference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Difference LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Difference PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Difference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Difference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Difference PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Difference GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Difference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Difference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Difference GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Dimension PointSet(g): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Dimension(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dimension(g)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Dimension LineSet(g): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Dimension(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dimension(g)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Dimension PolySet(g): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Dimension(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dimension(g)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Dimension PointMSet(g): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Dimension(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dimension(g)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Dimension LineMSet(g): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Dimension(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dimension(g)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Dimension PolygonMSet(g): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Dimension(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dimension(g)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Dimension PointSet3D(g): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Dimension(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dimension(g)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Dimension LineSet3D(g): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Dimension(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dimension(g)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Dimension PolygonSet3D(g): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Dimension(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dimension(g)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Dimension GCSet3D(g): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Dimension(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dimension(g)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Disjoint PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Disjoint(foo1.the_geom, foo2.the_geom),
+				ST_Disjoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Disjoint PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Disjoint LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Disjoint(foo1.the_geom, foo2.the_geom),
+				ST_Disjoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Disjoint LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Disjoint PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Disjoint(foo1.the_geom, foo2.the_geom),
+				ST_Disjoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Disjoint PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Disjoint PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Disjoint(foo1.the_geom, foo2.the_geom),
+				ST_Disjoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Disjoint PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Disjoint LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Disjoint(foo1.the_geom, foo2.the_geom),
+				ST_Disjoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Disjoint LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Disjoint PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Disjoint(foo1.the_geom, foo2.the_geom),
+				ST_Disjoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Disjoint PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Disjoint PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Disjoint(foo1.the_geom, foo2.the_geom),
+				ST_Disjoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Disjoint PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Disjoint LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Disjoint(foo1.the_geom, foo2.the_geom),
+				ST_Disjoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Disjoint LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Disjoint PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Disjoint(foo1.the_geom, foo2.the_geom),
+				ST_Disjoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Disjoint PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Disjoint GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Disjoint(foo1.the_geom, foo2.the_geom),
+				ST_Disjoint(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Disjoint GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Distance PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Distance LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Distance PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Distance PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Distance LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Distance PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Distance PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Distance LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Distance PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Distance GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Distance_Sphere PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Distance_Sphere(foo1.the_geom, foo2.the_geom),
+				ST_Distance_Sphere(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance_Sphere PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Distance_Sphere LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Distance_Sphere(foo1.the_geom, foo2.the_geom),
+				ST_Distance_Sphere(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance_Sphere LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Distance_Sphere PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Distance_Sphere(foo1.the_geom, foo2.the_geom),
+				ST_Distance_Sphere(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance_Sphere PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Distance_Sphere PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Distance_Sphere(foo1.the_geom, foo2.the_geom),
+				ST_Distance_Sphere(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance_Sphere PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Distance_Sphere LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Distance_Sphere(foo1.the_geom, foo2.the_geom),
+				ST_Distance_Sphere(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance_Sphere LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Distance_Sphere PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Distance_Sphere(foo1.the_geom, foo2.the_geom),
+				ST_Distance_Sphere(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance_Sphere PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Distance_Sphere PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Distance_Sphere(foo1.the_geom, foo2.the_geom),
+				ST_Distance_Sphere(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance_Sphere PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Distance_Sphere LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Distance_Sphere(foo1.the_geom, foo2.the_geom),
+				ST_Distance_Sphere(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance_Sphere LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Distance_Sphere PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Distance_Sphere(foo1.the_geom, foo2.the_geom),
+				ST_Distance_Sphere(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance_Sphere PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Distance_Sphere GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Distance_Sphere(foo1.the_geom, foo2.the_geom),
+				ST_Distance_Sphere(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Distance_Sphere GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Distance_Spheroid PointSet(pointlonlatA, pointlonlatB, measurement_spheroid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Distance_Spheroid(foo1.the_geom, foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Distance_Spheroid(pointlonlatA, pointlonlatB, measurement_spheroid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Distance_Spheroid LineSet(pointlonlatA, pointlonlatB, measurement_spheroid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Distance_Spheroid(foo1.the_geom, foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Distance_Spheroid(pointlonlatA, pointlonlatB, measurement_spheroid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Distance_Spheroid PolySet(pointlonlatA, pointlonlatB, measurement_spheroid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Distance_Spheroid(foo1.the_geom, foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Distance_Spheroid(pointlonlatA, pointlonlatB, measurement_spheroid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Distance_Spheroid PointMSet(pointlonlatA, pointlonlatB, measurement_spheroid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Distance_Spheroid(foo1.the_geom, foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Distance_Spheroid(pointlonlatA, pointlonlatB, measurement_spheroid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Distance_Spheroid LineMSet(pointlonlatA, pointlonlatB, measurement_spheroid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Distance_Spheroid(foo1.the_geom, foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Distance_Spheroid(pointlonlatA, pointlonlatB, measurement_spheroid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Distance_Spheroid PolygonMSet(pointlonlatA, pointlonlatB, measurement_spheroid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Distance_Spheroid(foo1.the_geom, foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Distance_Spheroid(pointlonlatA, pointlonlatB, measurement_spheroid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Distance_Spheroid PointSet3D(pointlonlatA, pointlonlatB, measurement_spheroid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Distance_Spheroid(foo1.the_geom, foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Distance_Spheroid(pointlonlatA, pointlonlatB, measurement_spheroid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Distance_Spheroid LineSet3D(pointlonlatA, pointlonlatB, measurement_spheroid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Distance_Spheroid(foo1.the_geom, foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Distance_Spheroid(pointlonlatA, pointlonlatB, measurement_spheroid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Distance_Spheroid PolygonSet3D(pointlonlatA, pointlonlatB, measurement_spheroid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Distance_Spheroid(foo1.the_geom, foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Distance_Spheroid(pointlonlatA, pointlonlatB, measurement_spheroid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Distance_Spheroid GCSet3D(pointlonlatA, pointlonlatB, measurement_spheroid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Distance_Spheroid(foo1.the_geom, foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Distance_Spheroid(pointlonlatA, pointlonlatB, measurement_spheroid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_DropBBox PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_DropBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DropBBox(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_DropBBox LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_DropBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DropBBox(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_DropBBox PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_DropBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DropBBox(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_DropBBox PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_DropBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DropBBox(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_DropBBox LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_DropBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DropBBox(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_DropBBox PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_DropBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DropBBox(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_DropBBox PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_DropBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DropBBox(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_DropBBox LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_DropBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DropBBox(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_DropBBox PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_DropBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DropBBox(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_DropBBox GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_DropBBox(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DropBBox(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Dump PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Dump(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dump(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Dump LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Dump(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dump(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Dump PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Dump(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dump(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Dump PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Dump(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dump(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Dump LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Dump(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dump(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Dump PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Dump(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dump(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Dump PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Dump(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dump(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Dump LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Dump(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dump(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Dump PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Dump(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dump(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Dump GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Dump(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Dump(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_DumpRings PointSet(a_polygon): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_DumpRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DumpRings(a_polygon)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_DumpRings LineSet(a_polygon): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_DumpRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DumpRings(a_polygon)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_DumpRings PolySet(a_polygon): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_DumpRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DumpRings(a_polygon)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_DumpRings PointMSet(a_polygon): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_DumpRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DumpRings(a_polygon)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_DumpRings LineMSet(a_polygon): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_DumpRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DumpRings(a_polygon)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_DumpRings PolygonMSet(a_polygon): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_DumpRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DumpRings(a_polygon)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_DumpRings PointSet3D(a_polygon): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_DumpRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DumpRings(a_polygon)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_DumpRings LineSet3D(a_polygon): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_DumpRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DumpRings(a_polygon)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_DumpRings PolygonSet3D(a_polygon): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_DumpRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DumpRings(a_polygon)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_DumpRings GCSet3D(a_polygon): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_DumpRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DumpRings(a_polygon)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_DWithin PointSet(g1, g2, distance): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_DWithin(foo1.the_geom, foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DWithin(g1, g2, distance)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_DWithin LineSet(g1, g2, distance): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_DWithin(foo1.the_geom, foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DWithin(g1, g2, distance)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_DWithin PolySet(g1, g2, distance): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_DWithin(foo1.the_geom, foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DWithin(g1, g2, distance)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_DWithin PointMSet(g1, g2, distance): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_DWithin(foo1.the_geom, foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DWithin(g1, g2, distance)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_DWithin LineMSet(g1, g2, distance): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_DWithin(foo1.the_geom, foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DWithin(g1, g2, distance)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_DWithin PolygonMSet(g1, g2, distance): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_DWithin(foo1.the_geom, foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DWithin(g1, g2, distance)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_DWithin PointSet3D(g1, g2, distance): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_DWithin(foo1.the_geom, foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DWithin(g1, g2, distance)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_DWithin LineSet3D(g1, g2, distance): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_DWithin(foo1.the_geom, foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DWithin(g1, g2, distance)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_DWithin PolygonSet3D(g1, g2, distance): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_DWithin(foo1.the_geom, foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DWithin(g1, g2, distance)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_DWithin GCSet3D(g1, g2, distance): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_DWithin(foo1.the_geom, foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_DWithin(g1, g2, distance)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_EndPoint PointSet(g): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_EndPoint(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_EndPoint(g)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_EndPoint LineSet(g): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_EndPoint(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_EndPoint(g)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_EndPoint PolySet(g): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_EndPoint(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_EndPoint(g)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_EndPoint PointMSet(g): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_EndPoint(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_EndPoint(g)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_EndPoint LineMSet(g): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_EndPoint(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_EndPoint(g)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_EndPoint PolygonMSet(g): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_EndPoint(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_EndPoint(g)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_EndPoint PointSet3D(g): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_EndPoint(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_EndPoint(g)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_EndPoint LineSet3D(g): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_EndPoint(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_EndPoint(g)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_EndPoint PolygonSet3D(g): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_EndPoint(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_EndPoint(g)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_EndPoint GCSet3D(g): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_EndPoint(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_EndPoint(g)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Envelope PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Envelope(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Envelope(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Envelope LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Envelope(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Envelope(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Envelope PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Envelope(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Envelope(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Envelope PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Envelope(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Envelope(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Envelope LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Envelope(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Envelope(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Envelope PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Envelope(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Envelope(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Envelope PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Envelope(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Envelope(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Envelope LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Envelope(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Envelope(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Envelope PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Envelope(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Envelope(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Envelope GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Envelope(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Envelope(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Equals PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Equals(foo1.the_geom, foo2.the_geom),
+				ST_Equals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Equals PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Equals LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Equals(foo1.the_geom, foo2.the_geom),
+				ST_Equals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Equals LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Equals PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Equals(foo1.the_geom, foo2.the_geom),
+				ST_Equals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Equals PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Equals PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Equals(foo1.the_geom, foo2.the_geom),
+				ST_Equals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Equals PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Equals LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Equals(foo1.the_geom, foo2.the_geom),
+				ST_Equals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Equals LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Equals PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Equals(foo1.the_geom, foo2.the_geom),
+				ST_Equals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Equals PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Equals PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Equals(foo1.the_geom, foo2.the_geom),
+				ST_Equals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Equals PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Equals LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Equals(foo1.the_geom, foo2.the_geom),
+				ST_Equals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Equals LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Equals PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Equals(foo1.the_geom, foo2.the_geom),
+				ST_Equals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Equals PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Equals GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Equals(foo1.the_geom, foo2.the_geom),
+				ST_Equals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Equals GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent PointSet(schema_name, table_name, geocolumn_name): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(schema_name, table_name, geocolumn_name)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent LineSet(schema_name, table_name, geocolumn_name): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(schema_name, table_name, geocolumn_name)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent PolySet(schema_name, table_name, geocolumn_name): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(schema_name, table_name, geocolumn_name)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent PointMSet(schema_name, table_name, geocolumn_name): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(schema_name, table_name, geocolumn_name)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent LineMSet(schema_name, table_name, geocolumn_name): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(schema_name, table_name, geocolumn_name)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent PolygonMSet(schema_name, table_name, geocolumn_name): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(schema_name, table_name, geocolumn_name)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent PointSet3D(schema_name, table_name, geocolumn_name): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(schema_name, table_name, geocolumn_name)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent LineSet3D(schema_name, table_name, geocolumn_name): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(schema_name, table_name, geocolumn_name)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent PolygonSet3D(schema_name, table_name, geocolumn_name): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(schema_name, table_name, geocolumn_name)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent GCSet3D(schema_name, table_name, geocolumn_name): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey', 'monkey')
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(schema_name, table_name, geocolumn_name)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent PointSet(table_name, geocolumn_name): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(table_name, geocolumn_name)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent LineSet(table_name, geocolumn_name): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(table_name, geocolumn_name)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent PolySet(table_name, geocolumn_name): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(table_name, geocolumn_name)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent PointMSet(table_name, geocolumn_name): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(table_name, geocolumn_name)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent LineMSet(table_name, geocolumn_name): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(table_name, geocolumn_name)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent PolygonMSet(table_name, geocolumn_name): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(table_name, geocolumn_name)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent PointSet3D(table_name, geocolumn_name): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(table_name, geocolumn_name)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent LineSet3D(table_name, geocolumn_name): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(table_name, geocolumn_name)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent PolygonSet3D(table_name, geocolumn_name): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(table_name, geocolumn_name)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Estimated_Extent GCSet3D(table_name, geocolumn_name): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Estimated_Extent('monkey', 'monkey')
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Estimated_Extent(table_name, geocolumn_name)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Expand PointSet(g1, units_to_expand): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Expand(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Expand LineSet(g1, units_to_expand): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Expand(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Expand PolySet(g1, units_to_expand): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Expand(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Expand PointMSet(g1, units_to_expand): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Expand(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Expand LineMSet(g1, units_to_expand): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Expand(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Expand PolygonMSet(g1, units_to_expand): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Expand(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Expand PointSet3D(g1, units_to_expand): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Expand(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Expand LineSet3D(g1, units_to_expand): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Expand(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Expand PolygonSet3D(g1, units_to_expand): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Expand(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Expand GCSet3D(g1, units_to_expand): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Expand(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Expand PointSet(g1, units_to_expand): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Expand LineSet(g1, units_to_expand): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Expand PolySet(g1, units_to_expand): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Expand PointMSet(g1, units_to_expand): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Expand LineMSet(g1, units_to_expand): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Expand PolygonMSet(g1, units_to_expand): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Expand PointSet3D(g1, units_to_expand): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Expand LineSet3D(g1, units_to_expand): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Expand PolygonSet3D(g1, units_to_expand): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Expand GCSet3D(g1, units_to_expand): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Expand PointSet(g1, units_to_expand): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Expand LineSet(g1, units_to_expand): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Expand PolySet(g1, units_to_expand): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Expand PointMSet(g1, units_to_expand): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Expand LineMSet(g1, units_to_expand): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Expand PolygonMSet(g1, units_to_expand): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Expand PointSet3D(g1, units_to_expand): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Expand LineSet3D(g1, units_to_expand): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Expand PolygonSet3D(g1, units_to_expand): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Expand GCSet3D(g1, units_to_expand): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Expand(foo1.the_geom, 0.5)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Expand(g1, units_to_expand)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Extent PointSet: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Extent(the_geom),
+				ST_Extent(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo;  
+	COMMIT;
+	SELECT 'ST_Extent PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Extent LineSet: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Extent(the_geom),
+				ST_Extent(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_Extent LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Extent PolySet: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Extent(the_geom),
+				ST_Extent(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo;  
+	COMMIT;
+	SELECT 'ST_Extent PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Extent PointMSet: Start Testing Multi/POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Extent(the_geom),
+				ST_Extent(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Extent PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Extent LineMSet: Start Testing Multi/LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Extent(the_geom),
+				ST_Extent(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_Extent LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Extent PolygonMSet: Start Testing Multi/POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Extent(the_geom),
+				ST_Extent(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Extent PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Extent PointSet3D: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Extent(the_geom),
+				ST_Extent(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Extent PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Extent LineSet3D: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Extent(the_geom),
+				ST_Extent(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Extent LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Extent PolygonSet3D: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Extent(the_geom),
+				ST_Extent(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Extent PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Extent GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Extent(the_geom),
+				ST_Extent(ST_Multi(the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Extent GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_ExteriorRing PointSet(a_polygon): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_ExteriorRing(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ExteriorRing(a_polygon)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_ExteriorRing LineSet(a_polygon): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_ExteriorRing(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ExteriorRing(a_polygon)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_ExteriorRing PolySet(a_polygon): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_ExteriorRing(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ExteriorRing(a_polygon)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_ExteriorRing PointMSet(a_polygon): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_ExteriorRing(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ExteriorRing(a_polygon)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_ExteriorRing LineMSet(a_polygon): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_ExteriorRing(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ExteriorRing(a_polygon)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_ExteriorRing PolygonMSet(a_polygon): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_ExteriorRing(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ExteriorRing(a_polygon)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_ExteriorRing PointSet3D(a_polygon): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_ExteriorRing(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ExteriorRing(a_polygon)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_ExteriorRing LineSet3D(a_polygon): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_ExteriorRing(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ExteriorRing(a_polygon)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_ExteriorRing PolygonSet3D(a_polygon): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_ExteriorRing(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ExteriorRing(a_polygon)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_ExteriorRing GCSet3D(a_polygon): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_ExteriorRing(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ExteriorRing(a_polygon)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Force_2D PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_2D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_2D(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Force_2D LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_2D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_2D(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Force_2D PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_2D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_2D(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Force_2D PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_2D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_2D(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Force_2D LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_2D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_2D(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Force_2D PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_2D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_2D(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Force_2D PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_2D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_2D(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Force_2D LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_2D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_2D(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Force_2D PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_2D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_2D(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Force_2D GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_2D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_2D(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Force_3D PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3D(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Force_3D LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3D(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Force_3D PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3D(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Force_3D PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3D(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Force_3D LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3D(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Force_3D PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3D(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Force_3D PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3D(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Force_3D LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3D(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Force_3D PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3D(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Force_3D GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3D(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Force_3DM PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DM(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DM(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Force_3DM LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DM(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DM(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Force_3DM PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DM(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DM(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Force_3DM PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DM(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DM(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Force_3DM LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DM(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DM(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Force_3DM PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DM(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DM(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Force_3DM PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DM(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DM(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Force_3DM LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DM(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DM(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Force_3DM PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DM(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DM(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Force_3DM GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DM(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DM(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Force_3DZ PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DZ(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DZ(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Force_3DZ LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DZ(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DZ(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Force_3DZ PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DZ(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DZ(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Force_3DZ PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DZ(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DZ(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Force_3DZ LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DZ(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DZ(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Force_3DZ PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DZ(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DZ(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Force_3DZ PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DZ(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DZ(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Force_3DZ LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DZ(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DZ(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Force_3DZ PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DZ(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DZ(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Force_3DZ GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_3DZ(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_3DZ(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Force_4D PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_4D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_4D(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Force_4D LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_4D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_4D(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Force_4D PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_4D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_4D(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Force_4D PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_4D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_4D(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Force_4D LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_4D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_4D(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Force_4D PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_4D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_4D(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Force_4D PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_4D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_4D(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Force_4D LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_4D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_4D(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Force_4D PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_4D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_4D(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Force_4D GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_4D(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_4D(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Force_Collection PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_Collection(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_Collection(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Force_Collection LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_Collection(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_Collection(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Force_Collection PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_Collection(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_Collection(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Force_Collection PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_Collection(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_Collection(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Force_Collection LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_Collection(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_Collection(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Force_Collection PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_Collection(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_Collection(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Force_Collection PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_Collection(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_Collection(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Force_Collection LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_Collection(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_Collection(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Force_Collection PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_Collection(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_Collection(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Force_Collection GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Force_Collection(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Force_Collection(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_ForceRHR PointSet(g): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_ForceRHR(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ForceRHR(g)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_ForceRHR LineSet(g): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_ForceRHR(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ForceRHR(g)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_ForceRHR PolySet(g): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_ForceRHR(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ForceRHR(g)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_ForceRHR PointMSet(g): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_ForceRHR(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ForceRHR(g)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_ForceRHR LineMSet(g): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_ForceRHR(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ForceRHR(g)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_ForceRHR PolygonMSet(g): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_ForceRHR(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ForceRHR(g)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_ForceRHR PointSet3D(g): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_ForceRHR(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ForceRHR(g)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_ForceRHR LineSet3D(g): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_ForceRHR(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ForceRHR(g)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_ForceRHR PolygonSet3D(g): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_ForceRHR(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ForceRHR(g)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_ForceRHR GCSet3D(g): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_ForceRHR(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ForceRHR(g)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_GeometryFromText PointSet(WKT): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeometryFromText LineSet(WKT): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeometryFromText PolySet(WKT): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeometryFromText PointMSet(WKT): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_GeometryFromText LineMSet(WKT): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_GeometryFromText PolygonMSet(WKT): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_GeometryFromText PointSet3D(WKT): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeometryFromText LineSet3D(WKT): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeometryFromText PolygonSet3D(WKT): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeometryFromText GCSet3D(WKT): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_GeometryFromText PointSet(WKT, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT, srid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeometryFromText LineSet(WKT, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT, srid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeometryFromText PolySet(WKT, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT, srid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeometryFromText PointMSet(WKT, srid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT, srid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_GeometryFromText LineMSet(WKT, srid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT, srid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_GeometryFromText PolygonMSet(WKT, srid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT, srid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_GeometryFromText PointSet3D(WKT, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT, srid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeometryFromText LineSet3D(WKT, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT, srid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeometryFromText PolygonSet3D(WKT, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT, srid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeometryFromText GCSet3D(WKT, srid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryFromText(WKT, srid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_GeometryN PointSet(geomA, n): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryN(geomA, n)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeometryN LineSet(geomA, n): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryN(geomA, n)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeometryN PolySet(geomA, n): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryN(geomA, n)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeometryN PointMSet(geomA, n): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryN(geomA, n)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_GeometryN LineMSet(geomA, n): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryN(geomA, n)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_GeometryN PolygonMSet(geomA, n): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryN(geomA, n)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_GeometryN PointSet3D(geomA, n): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryN(geomA, n)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeometryN LineSet3D(geomA, n): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryN(geomA, n)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeometryN PolygonSet3D(geomA, n): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryN(geomA, n)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeometryN GCSet3D(geomA, n): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeometryN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryN(geomA, n)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_GeometryType PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryType(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeometryType LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryType(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeometryType PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryType(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeometryType PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryType(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_GeometryType LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryType(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_GeometryType PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryType(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_GeometryType PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryType(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeometryType LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryType(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeometryType PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryType(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeometryType GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_GeometryType(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeometryType(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKB PointSet(EWKB): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKB(EWKB)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKB LineSet(EWKB): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKB(EWKB)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKB PolySet(EWKB): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKB(EWKB)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKB PointMSet(EWKB): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKB(EWKB)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKB LineMSet(EWKB): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKB(EWKB)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKB PolygonMSet(EWKB): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKB(EWKB)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKB PointSet3D(EWKB): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKB(EWKB)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKB LineSet3D(EWKB): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKB(EWKB)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKB PolygonSet3D(EWKB): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKB(EWKB)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKB GCSet3D(EWKB): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKB(EWKB)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKT PointSet(EWKT): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKT(ST_AsEWKT(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKT(EWKT)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKT LineSet(EWKT): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKT(ST_AsEWKT(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKT(EWKT)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKT PolySet(EWKT): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKT(ST_AsEWKT(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKT(EWKT)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKT PointMSet(EWKT): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKT(ST_AsEWKT(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKT(EWKT)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKT LineMSet(EWKT): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKT(ST_AsEWKT(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKT(EWKT)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKT PolygonMSet(EWKT): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKT(ST_AsEWKT(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKT(EWKT)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKT PointSet3D(EWKT): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKT(ST_AsEWKT(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKT(EWKT)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKT LineSet3D(EWKT): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKT(ST_AsEWKT(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKT(EWKT)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKT PolygonSet3D(EWKT): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKT(ST_AsEWKT(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKT(EWKT)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeomFromEWKT GCSet3D(EWKT): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromEWKT(ST_AsEWKT(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromEWKT(EWKT)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_GeomFromText PointSet(WKT): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeomFromText LineSet(WKT): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeomFromText PolySet(WKT): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeomFromText PointMSet(WKT): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_GeomFromText LineMSet(WKT): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_GeomFromText PolygonMSet(WKT): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_GeomFromText PointSet3D(WKT): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeomFromText LineSet3D(WKT): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeomFromText PolygonSet3D(WKT): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeomFromText GCSet3D(WKT): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_GeomFromText PointSet(WKT, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT, srid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeomFromText LineSet(WKT, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT, srid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeomFromText PolySet(WKT, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT, srid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeomFromText PointMSet(WKT, srid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT, srid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_GeomFromText LineMSet(WKT, srid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT, srid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_GeomFromText PolygonMSet(WKT, srid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT, srid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_GeomFromText PointSet3D(WKT, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT, srid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeomFromText LineSet3D(WKT, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT, srid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeomFromText PolygonSet3D(WKT, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT, srid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeomFromText GCSet3D(WKT, srid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromText(WKT, srid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB PointSet(geomA, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA, srid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB LineSet(geomA, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA, srid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB PolySet(geomA, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA, srid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB PointMSet(geomA, srid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA, srid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB LineMSet(geomA, srid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA, srid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB PolygonMSet(geomA, srid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA, srid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB PointSet3D(geomA, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA, srid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB LineSet3D(geomA, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA, srid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB PolygonSet3D(geomA, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA, srid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_GeomFromWKB GCSet3D(geomA, srid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_GeomFromWKB(ST_AsBinary(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_GeomFromWKB(geomA, srid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_HasArc PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_HasArc(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasArc(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_HasArc LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_HasArc(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasArc(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_HasArc PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_HasArc(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasArc(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_HasArc PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_HasArc(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasArc(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_HasArc LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_HasArc(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasArc(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_HasArc PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_HasArc(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasArc(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_HasArc PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_HasArc(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasArc(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_HasArc LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_HasArc(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasArc(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_HasArc PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_HasArc(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasArc(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_HasArc GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_HasArc(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasArc(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_HasBBox PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_HasBBox(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasBBox(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_HasBBox LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_HasBBox(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasBBox(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_HasBBox PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_HasBBox(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasBBox(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_HasBBox PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_HasBBox(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasBBox(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_HasBBox LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_HasBBox(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasBBox(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_HasBBox PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_HasBBox(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasBBox(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_HasBBox PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_HasBBox(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasBBox(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_HasBBox LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_HasBBox(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasBBox(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_HasBBox PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_HasBBox(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasBBox(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_HasBBox GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_HasBBox(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_HasBBox(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_InteriorRingN PointSet(a_polygon, n): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_InteriorRingN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_InteriorRingN(a_polygon, n)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_InteriorRingN LineSet(a_polygon, n): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_InteriorRingN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_InteriorRingN(a_polygon, n)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_InteriorRingN PolySet(a_polygon, n): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_InteriorRingN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_InteriorRingN(a_polygon, n)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_InteriorRingN PointMSet(a_polygon, n): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_InteriorRingN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_InteriorRingN(a_polygon, n)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_InteriorRingN LineMSet(a_polygon, n): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_InteriorRingN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_InteriorRingN(a_polygon, n)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_InteriorRingN PolygonMSet(a_polygon, n): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_InteriorRingN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_InteriorRingN(a_polygon, n)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_InteriorRingN PointSet3D(a_polygon, n): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_InteriorRingN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_InteriorRingN(a_polygon, n)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_InteriorRingN LineSet3D(a_polygon, n): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_InteriorRingN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_InteriorRingN(a_polygon, n)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_InteriorRingN PolygonSet3D(a_polygon, n): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_InteriorRingN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_InteriorRingN(a_polygon, n)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_InteriorRingN GCSet3D(a_polygon, n): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_InteriorRingN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_InteriorRingN(a_polygon, n)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Intersection PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Intersection(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Intersection(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersection PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Intersection LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Intersection(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Intersection(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersection LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Intersection PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Intersection(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Intersection(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersection PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Intersection PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Intersection(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Intersection(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersection PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Intersection LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Intersection(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Intersection(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersection LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Intersection PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Intersection(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Intersection(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersection PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Intersection PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Intersection(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Intersection(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersection PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Intersection LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Intersection(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Intersection(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersection LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Intersection PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Intersection(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Intersection(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersection PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Intersection GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Intersection(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Intersection(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersection GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Intersects PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Intersects(foo1.the_geom, foo2.the_geom),
+				ST_Intersects(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersects PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Intersects LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Intersects(foo1.the_geom, foo2.the_geom),
+				ST_Intersects(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersects LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Intersects PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Intersects(foo1.the_geom, foo2.the_geom),
+				ST_Intersects(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersects PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Intersects PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Intersects(foo1.the_geom, foo2.the_geom),
+				ST_Intersects(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersects PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Intersects LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Intersects(foo1.the_geom, foo2.the_geom),
+				ST_Intersects(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersects LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Intersects PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Intersects(foo1.the_geom, foo2.the_geom),
+				ST_Intersects(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersects PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Intersects PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Intersects(foo1.the_geom, foo2.the_geom),
+				ST_Intersects(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersects PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Intersects LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Intersects(foo1.the_geom, foo2.the_geom),
+				ST_Intersects(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersects LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Intersects PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Intersects(foo1.the_geom, foo2.the_geom),
+				ST_Intersects(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersects PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Intersects GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Intersects(foo1.the_geom, foo2.the_geom),
+				ST_Intersects(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Intersects GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_IsClosed PointSet(g): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_IsClosed(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsClosed(g)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_IsClosed LineSet(g): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_IsClosed(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsClosed(g)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_IsClosed PolySet(g): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_IsClosed(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsClosed(g)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_IsClosed PointMSet(g): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_IsClosed(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsClosed(g)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_IsClosed LineMSet(g): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_IsClosed(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsClosed(g)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_IsClosed PolygonMSet(g): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_IsClosed(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsClosed(g)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_IsClosed PointSet3D(g): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_IsClosed(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsClosed(g)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_IsClosed LineSet3D(g): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_IsClosed(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsClosed(g)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_IsClosed PolygonSet3D(g): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_IsClosed(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsClosed(g)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_IsClosed GCSet3D(g): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_IsClosed(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsClosed(g)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_IsEmpty PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_IsEmpty(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsEmpty(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_IsEmpty LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_IsEmpty(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsEmpty(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_IsEmpty PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_IsEmpty(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsEmpty(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_IsEmpty PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_IsEmpty(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsEmpty(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_IsEmpty LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_IsEmpty(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsEmpty(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_IsEmpty PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_IsEmpty(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsEmpty(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_IsEmpty PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_IsEmpty(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsEmpty(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_IsEmpty LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_IsEmpty(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsEmpty(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_IsEmpty PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_IsEmpty(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsEmpty(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_IsEmpty GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_IsEmpty(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsEmpty(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_IsRing PointSet(g): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_IsRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsRing(g)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_IsRing LineSet(g): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_IsRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsRing(g)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_IsRing PolySet(g): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_IsRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsRing(g)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_IsRing PointMSet(g): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_IsRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsRing(g)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_IsRing LineMSet(g): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_IsRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsRing(g)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_IsRing PolygonMSet(g): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_IsRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsRing(g)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_IsRing PointSet3D(g): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_IsRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsRing(g)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_IsRing LineSet3D(g): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_IsRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsRing(g)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_IsRing PolygonSet3D(g): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_IsRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsRing(g)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_IsRing GCSet3D(g): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_IsRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsRing(g)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_IsSimple PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_IsSimple(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsSimple(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_IsSimple LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_IsSimple(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsSimple(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_IsSimple PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_IsSimple(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsSimple(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_IsSimple PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_IsSimple(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsSimple(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_IsSimple LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_IsSimple(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsSimple(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_IsSimple PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_IsSimple(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsSimple(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_IsSimple PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_IsSimple(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsSimple(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_IsSimple LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_IsSimple(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsSimple(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_IsSimple PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_IsSimple(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsSimple(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_IsSimple GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_IsSimple(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_IsSimple(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Length PointSet(a_2dlinestring): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Length(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length(a_2dlinestring)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Length LineSet(a_2dlinestring): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Length(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length(a_2dlinestring)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Length PolySet(a_2dlinestring): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Length(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length(a_2dlinestring)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Length PointMSet(a_2dlinestring): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Length(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length(a_2dlinestring)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Length LineMSet(a_2dlinestring): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Length(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length(a_2dlinestring)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Length PolygonMSet(a_2dlinestring): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Length(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length(a_2dlinestring)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Length PointSet3D(a_2dlinestring): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Length(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length(a_2dlinestring)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Length LineSet3D(a_2dlinestring): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Length(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length(a_2dlinestring)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Length PolygonSet3D(a_2dlinestring): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Length(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length(a_2dlinestring)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Length GCSet3D(a_2dlinestring): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Length(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length(a_2dlinestring)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Length_Spheroid PointSet(a_linestring, a_spheroid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Length_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length_Spheroid(a_linestring, a_spheroid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Length_Spheroid LineSet(a_linestring, a_spheroid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Length_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length_Spheroid(a_linestring, a_spheroid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Length_Spheroid PolySet(a_linestring, a_spheroid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Length_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length_Spheroid(a_linestring, a_spheroid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Length_Spheroid PointMSet(a_linestring, a_spheroid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Length_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length_Spheroid(a_linestring, a_spheroid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Length_Spheroid LineMSet(a_linestring, a_spheroid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Length_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length_Spheroid(a_linestring, a_spheroid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Length_Spheroid PolygonMSet(a_linestring, a_spheroid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Length_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length_Spheroid(a_linestring, a_spheroid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Length_Spheroid PointSet3D(a_linestring, a_spheroid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Length_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length_Spheroid(a_linestring, a_spheroid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Length_Spheroid LineSet3D(a_linestring, a_spheroid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Length_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length_Spheroid(a_linestring, a_spheroid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Length_Spheroid PolygonSet3D(a_linestring, a_spheroid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Length_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length_Spheroid(a_linestring, a_spheroid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Length_Spheroid GCSet3D(a_linestring, a_spheroid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Length_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length_Spheroid(a_linestring, a_spheroid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Length2D PointSet(a_2dlinestring): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D(a_2dlinestring)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Length2D LineSet(a_2dlinestring): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D(a_2dlinestring)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Length2D PolySet(a_2dlinestring): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D(a_2dlinestring)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Length2D PointMSet(a_2dlinestring): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D(a_2dlinestring)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Length2D LineMSet(a_2dlinestring): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D(a_2dlinestring)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Length2D PolygonMSet(a_2dlinestring): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D(a_2dlinestring)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Length2D PointSet3D(a_2dlinestring): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D(a_2dlinestring)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Length2D LineSet3D(a_2dlinestring): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D(a_2dlinestring)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Length2D PolygonSet3D(a_2dlinestring): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D(a_2dlinestring)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Length2D GCSet3D(a_2dlinestring): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D(a_2dlinestring)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Length2D_Spheroid PointSet(a_linestring, a_spheroid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D_Spheroid(a_linestring, a_spheroid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Length2D_Spheroid LineSet(a_linestring, a_spheroid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D_Spheroid(a_linestring, a_spheroid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Length2D_Spheroid PolySet(a_linestring, a_spheroid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D_Spheroid(a_linestring, a_spheroid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Length2D_Spheroid PointMSet(a_linestring, a_spheroid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D_Spheroid(a_linestring, a_spheroid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Length2D_Spheroid LineMSet(a_linestring, a_spheroid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D_Spheroid(a_linestring, a_spheroid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Length2D_Spheroid PolygonMSet(a_linestring, a_spheroid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D_Spheroid(a_linestring, a_spheroid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Length2D_Spheroid PointSet3D(a_linestring, a_spheroid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D_Spheroid(a_linestring, a_spheroid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Length2D_Spheroid LineSet3D(a_linestring, a_spheroid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D_Spheroid(a_linestring, a_spheroid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Length2D_Spheroid PolygonSet3D(a_linestring, a_spheroid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D_Spheroid(a_linestring, a_spheroid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Length2D_Spheroid GCSet3D(a_linestring, a_spheroid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Length2D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length2D_Spheroid(a_linestring, a_spheroid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Length3D PointSet(a_3dlinestring): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D(a_3dlinestring)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Length3D LineSet(a_3dlinestring): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D(a_3dlinestring)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Length3D PolySet(a_3dlinestring): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D(a_3dlinestring)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Length3D PointMSet(a_3dlinestring): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D(a_3dlinestring)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Length3D LineMSet(a_3dlinestring): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D(a_3dlinestring)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Length3D PolygonMSet(a_3dlinestring): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D(a_3dlinestring)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Length3D PointSet3D(a_3dlinestring): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D(a_3dlinestring)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Length3D LineSet3D(a_3dlinestring): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D(a_3dlinestring)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Length3D PolygonSet3D(a_3dlinestring): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D(a_3dlinestring)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Length3D GCSet3D(a_3dlinestring): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D(a_3dlinestring)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Length3D_Spheroid PointSet(a_linestring, a_spheroid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D_Spheroid(a_linestring, a_spheroid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Length3D_Spheroid LineSet(a_linestring, a_spheroid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D_Spheroid(a_linestring, a_spheroid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Length3D_Spheroid PolySet(a_linestring, a_spheroid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D_Spheroid(a_linestring, a_spheroid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Length3D_Spheroid PointMSet(a_linestring, a_spheroid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D_Spheroid(a_linestring, a_spheroid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Length3D_Spheroid LineMSet(a_linestring, a_spheroid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D_Spheroid(a_linestring, a_spheroid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Length3D_Spheroid PolygonMSet(a_linestring, a_spheroid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D_Spheroid(a_linestring, a_spheroid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Length3D_Spheroid PointSet3D(a_linestring, a_spheroid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D_Spheroid(a_linestring, a_spheroid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Length3D_Spheroid LineSet3D(a_linestring, a_spheroid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D_Spheroid(a_linestring, a_spheroid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Length3D_Spheroid PolygonSet3D(a_linestring, a_spheroid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D_Spheroid(a_linestring, a_spheroid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Length3D_Spheroid GCSet3D(a_linestring, a_spheroid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Length3D_Spheroid(foo1.the_geom, 'SPHEROID["GRS_1980",6378137,298.257222101]')
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Length3D_Spheroid(a_linestring, a_spheroid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Line_Interpolate_Point PointSet(a_linestring, a_fraction): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Interpolate_Point(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Interpolate_Point(a_linestring, a_fraction)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Line_Interpolate_Point LineSet(a_linestring, a_fraction): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Interpolate_Point(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Interpolate_Point(a_linestring, a_fraction)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Line_Interpolate_Point PolySet(a_linestring, a_fraction): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Interpolate_Point(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Interpolate_Point(a_linestring, a_fraction)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Line_Interpolate_Point PointMSet(a_linestring, a_fraction): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Interpolate_Point(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Interpolate_Point(a_linestring, a_fraction)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Line_Interpolate_Point LineMSet(a_linestring, a_fraction): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Interpolate_Point(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Interpolate_Point(a_linestring, a_fraction)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Line_Interpolate_Point PolygonMSet(a_linestring, a_fraction): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Interpolate_Point(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Interpolate_Point(a_linestring, a_fraction)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Line_Interpolate_Point PointSet3D(a_linestring, a_fraction): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Interpolate_Point(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Interpolate_Point(a_linestring, a_fraction)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Line_Interpolate_Point LineSet3D(a_linestring, a_fraction): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Interpolate_Point(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Interpolate_Point(a_linestring, a_fraction)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Line_Interpolate_Point PolygonSet3D(a_linestring, a_fraction): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Interpolate_Point(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Interpolate_Point(a_linestring, a_fraction)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Line_Interpolate_Point GCSet3D(a_linestring, a_fraction): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Interpolate_Point(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Interpolate_Point(a_linestring, a_fraction)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Line_Locate_Point PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Line_Locate_Point(foo1.the_geom, foo2.the_geom),
+				ST_Line_Locate_Point(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Line_Locate_Point PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Line_Locate_Point LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Line_Locate_Point(foo1.the_geom, foo2.the_geom),
+				ST_Line_Locate_Point(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Line_Locate_Point LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Line_Locate_Point PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Line_Locate_Point(foo1.the_geom, foo2.the_geom),
+				ST_Line_Locate_Point(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Line_Locate_Point PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Line_Locate_Point PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Line_Locate_Point(foo1.the_geom, foo2.the_geom),
+				ST_Line_Locate_Point(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Line_Locate_Point PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Line_Locate_Point LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Line_Locate_Point(foo1.the_geom, foo2.the_geom),
+				ST_Line_Locate_Point(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Line_Locate_Point LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Line_Locate_Point PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Line_Locate_Point(foo1.the_geom, foo2.the_geom),
+				ST_Line_Locate_Point(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Line_Locate_Point PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Line_Locate_Point PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Line_Locate_Point(foo1.the_geom, foo2.the_geom),
+				ST_Line_Locate_Point(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Line_Locate_Point PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Line_Locate_Point LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Line_Locate_Point(foo1.the_geom, foo2.the_geom),
+				ST_Line_Locate_Point(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Line_Locate_Point LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Line_Locate_Point PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Line_Locate_Point(foo1.the_geom, foo2.the_geom),
+				ST_Line_Locate_Point(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Line_Locate_Point PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Line_Locate_Point GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Line_Locate_Point(foo1.the_geom, foo2.the_geom),
+				ST_Line_Locate_Point(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Line_Locate_Point GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Line_Substring PointSet(a_linestring, startfraction, endfraction): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Substring(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Substring(a_linestring, startfraction, endfraction)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Line_Substring LineSet(a_linestring, startfraction, endfraction): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Substring(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Substring(a_linestring, startfraction, endfraction)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Line_Substring PolySet(a_linestring, startfraction, endfraction): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Substring(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Substring(a_linestring, startfraction, endfraction)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Line_Substring PointMSet(a_linestring, startfraction, endfraction): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Substring(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Substring(a_linestring, startfraction, endfraction)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Line_Substring LineMSet(a_linestring, startfraction, endfraction): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Substring(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Substring(a_linestring, startfraction, endfraction)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Line_Substring PolygonMSet(a_linestring, startfraction, endfraction): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Substring(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Substring(a_linestring, startfraction, endfraction)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Line_Substring PointSet3D(a_linestring, startfraction, endfraction): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Substring(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Substring(a_linestring, startfraction, endfraction)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Line_Substring LineSet3D(a_linestring, startfraction, endfraction): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Substring(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Substring(a_linestring, startfraction, endfraction)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Line_Substring PolygonSet3D(a_linestring, startfraction, endfraction): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Substring(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Substring(a_linestring, startfraction, endfraction)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Line_Substring GCSet3D(a_linestring, startfraction, endfraction): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Line_Substring(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Line_Substring(a_linestring, startfraction, endfraction)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_LineFromMultiPoint PointSet(aMultiPoint): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineFromMultiPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineFromMultiPoint(aMultiPoint)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_LineFromMultiPoint LineSet(aMultiPoint): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineFromMultiPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineFromMultiPoint(aMultiPoint)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_LineFromMultiPoint PolySet(aMultiPoint): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineFromMultiPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineFromMultiPoint(aMultiPoint)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_LineFromMultiPoint PointMSet(aMultiPoint): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineFromMultiPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineFromMultiPoint(aMultiPoint)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_LineFromMultiPoint LineMSet(aMultiPoint): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineFromMultiPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineFromMultiPoint(aMultiPoint)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_LineFromMultiPoint PolygonMSet(aMultiPoint): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineFromMultiPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineFromMultiPoint(aMultiPoint)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_LineFromMultiPoint PointSet3D(aMultiPoint): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineFromMultiPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineFromMultiPoint(aMultiPoint)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_LineFromMultiPoint LineSet3D(aMultiPoint): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineFromMultiPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineFromMultiPoint(aMultiPoint)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_LineFromMultiPoint PolygonSet3D(aMultiPoint): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineFromMultiPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineFromMultiPoint(aMultiPoint)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_LineFromMultiPoint GCSet3D(aMultiPoint): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineFromMultiPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineFromMultiPoint(aMultiPoint)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_LineMerge PointSet(amultilinestring): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineMerge(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineMerge(amultilinestring)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_LineMerge LineSet(amultilinestring): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineMerge(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineMerge(amultilinestring)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_LineMerge PolySet(amultilinestring): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineMerge(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineMerge(amultilinestring)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_LineMerge PointMSet(amultilinestring): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineMerge(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineMerge(amultilinestring)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_LineMerge LineMSet(amultilinestring): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineMerge(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineMerge(amultilinestring)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_LineMerge PolygonMSet(amultilinestring): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineMerge(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineMerge(amultilinestring)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_LineMerge PointSet3D(amultilinestring): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineMerge(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineMerge(amultilinestring)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_LineMerge LineSet3D(amultilinestring): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineMerge(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineMerge(amultilinestring)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_LineMerge PolygonSet3D(amultilinestring): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineMerge(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineMerge(amultilinestring)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_LineMerge GCSet3D(amultilinestring): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineMerge(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineMerge(amultilinestring)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_LineToCurve PointSet(geomANoncircular): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineToCurve(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineToCurve(geomANoncircular)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_LineToCurve LineSet(geomANoncircular): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineToCurve(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineToCurve(geomANoncircular)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_LineToCurve PolySet(geomANoncircular): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineToCurve(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineToCurve(geomANoncircular)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_LineToCurve PointMSet(geomANoncircular): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineToCurve(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineToCurve(geomANoncircular)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_LineToCurve LineMSet(geomANoncircular): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineToCurve(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineToCurve(geomANoncircular)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_LineToCurve PolygonMSet(geomANoncircular): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineToCurve(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineToCurve(geomANoncircular)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_LineToCurve PointSet3D(geomANoncircular): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineToCurve(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineToCurve(geomANoncircular)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_LineToCurve LineSet3D(geomANoncircular): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineToCurve(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineToCurve(geomANoncircular)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_LineToCurve PolygonSet3D(geomANoncircular): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineToCurve(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineToCurve(geomANoncircular)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_LineToCurve GCSet3D(geomANoncircular): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_LineToCurve(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_LineToCurve(geomANoncircular)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Locate_Along_Measure PointSet(ageom_with_measure, a_measure): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Along_Measure(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Along_Measure(ageom_with_measure, a_measure)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Locate_Along_Measure LineSet(ageom_with_measure, a_measure): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Along_Measure(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Along_Measure(ageom_with_measure, a_measure)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Locate_Along_Measure PolySet(ageom_with_measure, a_measure): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Along_Measure(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Along_Measure(ageom_with_measure, a_measure)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Locate_Along_Measure PointMSet(ageom_with_measure, a_measure): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Along_Measure(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Along_Measure(ageom_with_measure, a_measure)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Locate_Along_Measure LineMSet(ageom_with_measure, a_measure): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Along_Measure(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Along_Measure(ageom_with_measure, a_measure)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Locate_Along_Measure PolygonMSet(ageom_with_measure, a_measure): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Along_Measure(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Along_Measure(ageom_with_measure, a_measure)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Locate_Along_Measure PointSet3D(ageom_with_measure, a_measure): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Along_Measure(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Along_Measure(ageom_with_measure, a_measure)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Locate_Along_Measure LineSet3D(ageom_with_measure, a_measure): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Along_Measure(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Along_Measure(ageom_with_measure, a_measure)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Locate_Along_Measure PolygonSet3D(ageom_with_measure, a_measure): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Along_Measure(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Along_Measure(ageom_with_measure, a_measure)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Locate_Along_Measure GCSet3D(ageom_with_measure, a_measure): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Along_Measure(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Along_Measure(ageom_with_measure, a_measure)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Locate_Between_Measures PointSet(geomA, measure_start, measure_end): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Between_Measures(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Between_Measures(geomA, measure_start, measure_end)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Locate_Between_Measures LineSet(geomA, measure_start, measure_end): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Between_Measures(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Between_Measures(geomA, measure_start, measure_end)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Locate_Between_Measures PolySet(geomA, measure_start, measure_end): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Between_Measures(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Between_Measures(geomA, measure_start, measure_end)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Locate_Between_Measures PointMSet(geomA, measure_start, measure_end): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Between_Measures(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Between_Measures(geomA, measure_start, measure_end)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Locate_Between_Measures LineMSet(geomA, measure_start, measure_end): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Between_Measures(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Between_Measures(geomA, measure_start, measure_end)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Locate_Between_Measures PolygonMSet(geomA, measure_start, measure_end): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Between_Measures(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Between_Measures(geomA, measure_start, measure_end)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Locate_Between_Measures PointSet3D(geomA, measure_start, measure_end): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Between_Measures(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Between_Measures(geomA, measure_start, measure_end)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Locate_Between_Measures LineSet3D(geomA, measure_start, measure_end): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Between_Measures(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Between_Measures(geomA, measure_start, measure_end)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Locate_Between_Measures PolygonSet3D(geomA, measure_start, measure_end): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Between_Measures(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Between_Measures(geomA, measure_start, measure_end)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Locate_Between_Measures GCSet3D(geomA, measure_start, measure_end): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Locate_Between_Measures(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Locate_Between_Measures(geomA, measure_start, measure_end)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_M PointSet(a_point): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_M(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_M(a_point)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_M LineSet(a_point): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_M(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_M(a_point)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_M PolySet(a_point): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_M(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_M(a_point)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_M PointMSet(a_point): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_M(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_M(a_point)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_M LineMSet(a_point): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_M(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_M(a_point)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_M PolygonMSet(a_point): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_M(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_M(a_point)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_M PointSet3D(a_point): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_M(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_M(a_point)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_M LineSet3D(a_point): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_M(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_M(a_point)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_M PolygonSet3D(a_point): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_M(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_M(a_point)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_M GCSet3D(a_point): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_M(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_M(a_point)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_MakeBox2D PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_MakeBox2D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox2D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox2D PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_MakeBox2D LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_MakeBox2D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox2D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox2D LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_MakeBox2D PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_MakeBox2D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox2D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox2D PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_MakeBox2D PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_MakeBox2D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox2D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox2D PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_MakeBox2D LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_MakeBox2D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox2D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox2D LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_MakeBox2D PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_MakeBox2D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox2D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox2D PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_MakeBox2D PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_MakeBox2D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox2D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox2D PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_MakeBox2D LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_MakeBox2D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox2D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox2D LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_MakeBox2D PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_MakeBox2D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox2D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox2D PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_MakeBox2D GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_MakeBox2D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox2D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox2D GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_MakeBox3D PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_MakeBox3D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox3D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox3D PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_MakeBox3D LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_MakeBox3D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox3D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox3D LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_MakeBox3D PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_MakeBox3D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox3D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox3D PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_MakeBox3D PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_MakeBox3D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox3D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox3D PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_MakeBox3D LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_MakeBox3D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox3D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox3D LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_MakeBox3D PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_MakeBox3D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox3D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox3D PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_MakeBox3D PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_MakeBox3D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox3D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox3D PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_MakeBox3D LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_MakeBox3D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox3D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox3D LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_MakeBox3D PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_MakeBox3D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox3D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox3D PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_MakeBox3D GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_MakeBox3D(foo1.the_geom, foo2.the_geom),
+				ST_MakeBox3D(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeBox3D GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_MakeLine PointSet: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakeLine(the_geom)),
+		ST_AsEWKT(ST_MakeLine(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo;  
+	COMMIT;
+	SELECT 'ST_MakeLine PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakeLine LineSet: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakeLine(the_geom)),
+		ST_AsEWKT(ST_MakeLine(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_MakeLine LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakeLine PolySet: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakeLine(the_geom)),
+		ST_AsEWKT(ST_MakeLine(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo;  
+	COMMIT;
+	SELECT 'ST_MakeLine PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakeLine PointMSet: Start Testing Multi/POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakeLine(the_geom)),
+		ST_AsEWKT(ST_MakeLine(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_MakeLine PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_MakeLine LineMSet: Start Testing Multi/LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakeLine(the_geom)),
+		ST_AsEWKT(ST_MakeLine(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_MakeLine LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_MakeLine PolygonMSet: Start Testing Multi/POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakeLine(the_geom)),
+		ST_AsEWKT(ST_MakeLine(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_MakeLine PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_MakeLine PointSet3D: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakeLine(the_geom)),
+		ST_AsEWKT(ST_MakeLine(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_MakeLine PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakeLine LineSet3D: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakeLine(the_geom)),
+		ST_AsEWKT(ST_MakeLine(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_MakeLine LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakeLine PolygonSet3D: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakeLine(the_geom)),
+		ST_AsEWKT(ST_MakeLine(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_MakeLine PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakeLine GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakeLine(the_geom)),
+		ST_AsEWKT(ST_MakeLine(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo;  
+	COMMIT;
+	SELECT 'ST_MakeLine GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_MakeLine PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_MakeLine(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_MakeLine(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeLine PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_MakeLine LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_MakeLine(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_MakeLine(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeLine LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_MakeLine PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_MakeLine(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_MakeLine(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeLine PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_MakeLine PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_MakeLine(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_MakeLine(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeLine PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_MakeLine LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_MakeLine(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_MakeLine(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeLine LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_MakeLine PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_MakeLine(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_MakeLine(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeLine PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_MakeLine PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_MakeLine(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_MakeLine(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeLine PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_MakeLine LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_MakeLine(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_MakeLine(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeLine LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_MakeLine PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_MakeLine(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_MakeLine(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeLine PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_MakeLine GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_MakeLine(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_MakeLine(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_MakeLine GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_MakePoint PointSet(x, y): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakePoint LineSet(x, y): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakePoint PolySet(x, y): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakePoint PointMSet(x, y): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_MakePoint LineMSet(x, y): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_MakePoint PolygonMSet(x, y): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_MakePoint PointSet3D(x, y): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakePoint LineSet3D(x, y): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakePoint PolygonSet3D(x, y): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakePoint GCSet3D(x, y): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_MakePoint PointSet(x, y, z): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakePoint LineSet(x, y, z): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakePoint PolySet(x, y, z): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakePoint PointMSet(x, y, z): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_MakePoint LineMSet(x, y, z): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_MakePoint PolygonMSet(x, y, z): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_MakePoint PointSet3D(x, y, z): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakePoint LineSet3D(x, y, z): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakePoint PolygonSet3D(x, y, z): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakePoint GCSet3D(x, y, z): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_MakePoint PointSet(x, y, z, m): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z, m)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakePoint LineSet(x, y, z, m): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z, m)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakePoint PolySet(x, y, z, m): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z, m)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakePoint PointMSet(x, y, z, m): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z, m)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_MakePoint LineMSet(x, y, z, m): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z, m)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_MakePoint PolygonMSet(x, y, z, m): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z, m)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_MakePoint PointSet3D(x, y, z, m): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z, m)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakePoint LineSet3D(x, y, z, m): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z, m)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakePoint PolygonSet3D(x, y, z, m): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z, m)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakePoint GCSet3D(x, y, z, m): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePoint(0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePoint(x, y, z, m)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_MakePointM PointSet(x, y, m): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePointM(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePointM(x, y, m)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakePointM LineSet(x, y, m): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePointM(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePointM(x, y, m)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakePointM PolySet(x, y, m): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePointM(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePointM(x, y, m)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakePointM PointMSet(x, y, m): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePointM(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePointM(x, y, m)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_MakePointM LineMSet(x, y, m): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePointM(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePointM(x, y, m)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_MakePointM PolygonMSet(x, y, m): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePointM(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePointM(x, y, m)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_MakePointM PointSet3D(x, y, m): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePointM(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePointM(x, y, m)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakePointM LineSet3D(x, y, m): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePointM(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePointM(x, y, m)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakePointM PolygonSet3D(x, y, m): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePointM(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePointM(x, y, m)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakePointM GCSet3D(x, y, m): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePointM(0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePointM(x, y, m)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_MakePolygon PointSet(linestring): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(linestring)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakePolygon LineSet(linestring): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(linestring)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakePolygon PolySet(linestring): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(linestring)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakePolygon PointMSet(linestring): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(linestring)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_MakePolygon LineMSet(linestring): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(linestring)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_MakePolygon PolygonMSet(linestring): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(linestring)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_MakePolygon PointSet3D(linestring): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(linestring)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakePolygon LineSet3D(linestring): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(linestring)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakePolygon PolygonSet3D(linestring): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(linestring)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakePolygon GCSet3D(linestring): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(linestring)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_MakePolygon PointSet(outerlinestring, interiorlinestrings): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom,  
+						ARRAY[foo2.the_geom]
+					))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(outerlinestring, interiorlinestrings)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakePolygon LineSet(outerlinestring, interiorlinestrings): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom,  
+						ARRAY[foo2.the_geom]
+					))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(outerlinestring, interiorlinestrings)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakePolygon PolySet(outerlinestring, interiorlinestrings): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom,  
+						ARRAY[foo2.the_geom]
+					))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(outerlinestring, interiorlinestrings)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakePolygon PointMSet(outerlinestring, interiorlinestrings): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom,  
+						ARRAY[foo2.the_geom]
+					))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(outerlinestring, interiorlinestrings)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_MakePolygon LineMSet(outerlinestring, interiorlinestrings): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom,  
+						ARRAY[foo2.the_geom]
+					))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(outerlinestring, interiorlinestrings)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_MakePolygon PolygonMSet(outerlinestring, interiorlinestrings): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom,  
+						ARRAY[foo2.the_geom]
+					))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(outerlinestring, interiorlinestrings)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_MakePolygon PointSet3D(outerlinestring, interiorlinestrings): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom,  
+						ARRAY[foo2.the_geom]
+					))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(outerlinestring, interiorlinestrings)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MakePolygon LineSet3D(outerlinestring, interiorlinestrings): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom,  
+						ARRAY[foo2.the_geom]
+					))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(outerlinestring, interiorlinestrings)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MakePolygon PolygonSet3D(outerlinestring, interiorlinestrings): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom,  
+						ARRAY[foo2.the_geom]
+					))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(outerlinestring, interiorlinestrings)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MakePolygon GCSet3D(outerlinestring, interiorlinestrings): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MakePolygon(foo1.the_geom,  
+						ARRAY[foo2.the_geom]
+					))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_MakePolygon(outerlinestring, interiorlinestrings)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Max_Distance PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Max_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Max_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Max_Distance PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Max_Distance LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Max_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Max_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Max_Distance LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Max_Distance PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Max_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Max_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Max_Distance PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Max_Distance PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Max_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Max_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Max_Distance PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Max_Distance LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Max_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Max_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Max_Distance LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Max_Distance PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Max_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Max_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Max_Distance PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Max_Distance PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Max_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Max_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Max_Distance PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Max_Distance LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Max_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Max_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Max_Distance LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Max_Distance PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Max_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Max_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Max_Distance PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Max_Distance GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Max_Distance(foo1.the_geom, foo2.the_geom),
+				ST_Max_Distance(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Max_Distance GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Mem_Size PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Mem_Size(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Mem_Size(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Mem_Size LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Mem_Size(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Mem_Size(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Mem_Size PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Mem_Size(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Mem_Size(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Mem_Size PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Mem_Size(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Mem_Size(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Mem_Size LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Mem_Size(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Mem_Size(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Mem_Size PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Mem_Size(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Mem_Size(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Mem_Size PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Mem_Size(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Mem_Size(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Mem_Size LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Mem_Size(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Mem_Size(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Mem_Size PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Mem_Size(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Mem_Size(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Mem_Size GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Mem_Size(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Mem_Size(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_MemUnion PointSet: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MemUnion(the_geom)),
+		ST_AsEWKT(ST_MemUnion(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo;  
+	COMMIT;
+	SELECT 'ST_MemUnion PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MemUnion LineSet: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MemUnion(the_geom)),
+		ST_AsEWKT(ST_MemUnion(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_MemUnion LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MemUnion PolySet: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MemUnion(the_geom)),
+		ST_AsEWKT(ST_MemUnion(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo;  
+	COMMIT;
+	SELECT 'ST_MemUnion PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MemUnion PointMSet: Start Testing Multi/POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MemUnion(the_geom)),
+		ST_AsEWKT(ST_MemUnion(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_MemUnion PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_MemUnion LineMSet: Start Testing Multi/LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MemUnion(the_geom)),
+		ST_AsEWKT(ST_MemUnion(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_MemUnion LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_MemUnion PolygonMSet: Start Testing Multi/POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MemUnion(the_geom)),
+		ST_AsEWKT(ST_MemUnion(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_MemUnion PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_MemUnion PointSet3D: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MemUnion(the_geom)),
+		ST_AsEWKT(ST_MemUnion(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_MemUnion PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_MemUnion LineSet3D: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MemUnion(the_geom)),
+		ST_AsEWKT(ST_MemUnion(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_MemUnion LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_MemUnion PolygonSet3D: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MemUnion(the_geom)),
+		ST_AsEWKT(ST_MemUnion(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_MemUnion PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_MemUnion GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_MemUnion(the_geom)),
+		ST_AsEWKT(ST_MemUnion(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo;  
+	COMMIT;
+	SELECT 'ST_MemUnion GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Multi PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Multi(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Multi(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Multi LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Multi(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Multi(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Multi PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Multi(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Multi(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Multi PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Multi(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Multi(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Multi LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Multi(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Multi(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Multi PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Multi(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Multi(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Multi PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Multi(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Multi(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Multi LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Multi(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Multi(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Multi PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Multi(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Multi(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Multi GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Multi(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Multi(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_NDims PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_NDims(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NDims(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_NDims LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_NDims(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NDims(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_NDims PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_NDims(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NDims(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_NDims PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_NDims(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NDims(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_NDims LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_NDims(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NDims(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_NDims PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_NDims(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NDims(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_NDims PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_NDims(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NDims(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_NDims LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_NDims(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NDims(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_NDims PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_NDims(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NDims(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_NDims GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_NDims(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NDims(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_NPoints PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_NPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NPoints(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_NPoints LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_NPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NPoints(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_NPoints PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_NPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NPoints(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_NPoints PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_NPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NPoints(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_NPoints LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_NPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NPoints(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_NPoints PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_NPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NPoints(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_NPoints PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_NPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NPoints(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_NPoints LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_NPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NPoints(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_NPoints PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_NPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NPoints(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_NPoints GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_NPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NPoints(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_NumGeometries PointSet(a_multi_or_geomcollection): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_NumGeometries(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumGeometries(a_multi_or_geomcollection)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_NumGeometries LineSet(a_multi_or_geomcollection): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_NumGeometries(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumGeometries(a_multi_or_geomcollection)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_NumGeometries PolySet(a_multi_or_geomcollection): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_NumGeometries(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumGeometries(a_multi_or_geomcollection)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_NumGeometries PointMSet(a_multi_or_geomcollection): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_NumGeometries(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumGeometries(a_multi_or_geomcollection)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_NumGeometries LineMSet(a_multi_or_geomcollection): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_NumGeometries(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumGeometries(a_multi_or_geomcollection)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_NumGeometries PolygonMSet(a_multi_or_geomcollection): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_NumGeometries(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumGeometries(a_multi_or_geomcollection)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_NumGeometries PointSet3D(a_multi_or_geomcollection): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_NumGeometries(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumGeometries(a_multi_or_geomcollection)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_NumGeometries LineSet3D(a_multi_or_geomcollection): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_NumGeometries(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumGeometries(a_multi_or_geomcollection)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_NumGeometries PolygonSet3D(a_multi_or_geomcollection): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_NumGeometries(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumGeometries(a_multi_or_geomcollection)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_NumGeometries GCSet3D(a_multi_or_geomcollection): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_NumGeometries(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumGeometries(a_multi_or_geomcollection)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_NumInteriorRing PointSet(a_polygon): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRing(a_polygon)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_NumInteriorRing LineSet(a_polygon): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRing(a_polygon)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_NumInteriorRing PolySet(a_polygon): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRing(a_polygon)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_NumInteriorRing PointMSet(a_polygon): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRing(a_polygon)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_NumInteriorRing LineMSet(a_polygon): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRing(a_polygon)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_NumInteriorRing PolygonMSet(a_polygon): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRing(a_polygon)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_NumInteriorRing PointSet3D(a_polygon): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRing(a_polygon)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_NumInteriorRing LineSet3D(a_polygon): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRing(a_polygon)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_NumInteriorRing PolygonSet3D(a_polygon): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRing(a_polygon)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_NumInteriorRing GCSet3D(a_polygon): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRing(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRing(a_polygon)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_NumInteriorRings PointSet(a_polygon): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRings(a_polygon)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_NumInteriorRings LineSet(a_polygon): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRings(a_polygon)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_NumInteriorRings PolySet(a_polygon): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRings(a_polygon)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_NumInteriorRings PointMSet(a_polygon): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRings(a_polygon)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_NumInteriorRings LineMSet(a_polygon): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRings(a_polygon)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_NumInteriorRings PolygonMSet(a_polygon): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRings(a_polygon)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_NumInteriorRings PointSet3D(a_polygon): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRings(a_polygon)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_NumInteriorRings LineSet3D(a_polygon): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRings(a_polygon)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_NumInteriorRings PolygonSet3D(a_polygon): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRings(a_polygon)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_NumInteriorRings GCSet3D(a_polygon): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_NumInteriorRings(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumInteriorRings(a_polygon)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_NumPoints PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_NumPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumPoints(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_NumPoints LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_NumPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumPoints(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_NumPoints PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_NumPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumPoints(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_NumPoints PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_NumPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumPoints(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_NumPoints LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_NumPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumPoints(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_NumPoints PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_NumPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumPoints(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_NumPoints PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_NumPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumPoints(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_NumPoints LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_NumPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumPoints(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_NumPoints PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_NumPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumPoints(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_NumPoints GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_NumPoints(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_NumPoints(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_OrderingEquals PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_OrderingEquals(foo1.the_geom, foo2.the_geom),
+				ST_OrderingEquals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_OrderingEquals PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_OrderingEquals LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_OrderingEquals(foo1.the_geom, foo2.the_geom),
+				ST_OrderingEquals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_OrderingEquals LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_OrderingEquals PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_OrderingEquals(foo1.the_geom, foo2.the_geom),
+				ST_OrderingEquals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_OrderingEquals PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_OrderingEquals PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_OrderingEquals(foo1.the_geom, foo2.the_geom),
+				ST_OrderingEquals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_OrderingEquals PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_OrderingEquals LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_OrderingEquals(foo1.the_geom, foo2.the_geom),
+				ST_OrderingEquals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_OrderingEquals LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_OrderingEquals PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_OrderingEquals(foo1.the_geom, foo2.the_geom),
+				ST_OrderingEquals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_OrderingEquals PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_OrderingEquals PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_OrderingEquals(foo1.the_geom, foo2.the_geom),
+				ST_OrderingEquals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_OrderingEquals PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_OrderingEquals LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_OrderingEquals(foo1.the_geom, foo2.the_geom),
+				ST_OrderingEquals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_OrderingEquals LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_OrderingEquals PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_OrderingEquals(foo1.the_geom, foo2.the_geom),
+				ST_OrderingEquals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_OrderingEquals PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_OrderingEquals GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_OrderingEquals(foo1.the_geom, foo2.the_geom),
+				ST_OrderingEquals(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_OrderingEquals GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Overlaps PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Overlaps(foo1.the_geom, foo2.the_geom),
+				ST_Overlaps(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Overlaps PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Overlaps LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Overlaps(foo1.the_geom, foo2.the_geom),
+				ST_Overlaps(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Overlaps LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Overlaps PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Overlaps(foo1.the_geom, foo2.the_geom),
+				ST_Overlaps(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Overlaps PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Overlaps PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Overlaps(foo1.the_geom, foo2.the_geom),
+				ST_Overlaps(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Overlaps PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Overlaps LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Overlaps(foo1.the_geom, foo2.the_geom),
+				ST_Overlaps(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Overlaps LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Overlaps PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Overlaps(foo1.the_geom, foo2.the_geom),
+				ST_Overlaps(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Overlaps PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Overlaps PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Overlaps(foo1.the_geom, foo2.the_geom),
+				ST_Overlaps(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Overlaps PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Overlaps LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Overlaps(foo1.the_geom, foo2.the_geom),
+				ST_Overlaps(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Overlaps LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Overlaps PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Overlaps(foo1.the_geom, foo2.the_geom),
+				ST_Overlaps(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Overlaps PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Overlaps GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Overlaps(foo1.the_geom, foo2.the_geom),
+				ST_Overlaps(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Overlaps GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Perimeter PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Perimeter LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Perimeter PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Perimeter PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Perimeter LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Perimeter PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Perimeter PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Perimeter LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Perimeter PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Perimeter GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Perimeter2D PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter2D(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Perimeter2D LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter2D(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Perimeter2D PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter2D(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Perimeter2D PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter2D(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Perimeter2D LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter2D(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Perimeter2D PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter2D(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Perimeter2D PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter2D(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Perimeter2D LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter2D(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Perimeter2D PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter2D(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Perimeter2D GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter2D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter2D(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Perimeter3D PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter3D(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Perimeter3D LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter3D(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Perimeter3D PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter3D(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Perimeter3D PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter3D(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Perimeter3D LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter3D(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Perimeter3D PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter3D(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Perimeter3D PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter3D(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Perimeter3D LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter3D(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Perimeter3D PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter3D(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Perimeter3D GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Perimeter3D(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Perimeter3D(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Point PointSet(x_lon, y_lat): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Point(0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Point(x_lon, y_lat)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Point LineSet(x_lon, y_lat): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Point(0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Point(x_lon, y_lat)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Point PolySet(x_lon, y_lat): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Point(0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Point(x_lon, y_lat)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Point PointMSet(x_lon, y_lat): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Point(0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Point(x_lon, y_lat)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Point LineMSet(x_lon, y_lat): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Point(0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Point(x_lon, y_lat)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Point PolygonMSet(x_lon, y_lat): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Point(0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Point(x_lon, y_lat)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Point PointSet3D(x_lon, y_lat): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Point(0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Point(x_lon, y_lat)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Point LineSet3D(x_lon, y_lat): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Point(0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Point(x_lon, y_lat)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Point PolygonSet3D(x_lon, y_lat): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Point(0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Point(x_lon, y_lat)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Point GCSet3D(x_lon, y_lat): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Point(0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Point(x_lon, y_lat)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_PointFromText PointSet(WKT): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_PointFromText LineSet(WKT): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_PointFromText PolySet(WKT): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_PointFromText PointMSet(WKT): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_PointFromText LineMSet(WKT): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_PointFromText PolygonMSet(WKT): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_PointFromText PointSet3D(WKT): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_PointFromText LineSet3D(WKT): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_PointFromText PolygonSet3D(WKT): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_PointFromText GCSet3D(WKT): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_PointFromText PointSet(WKT, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT, srid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_PointFromText LineSet(WKT, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT, srid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_PointFromText PolySet(WKT, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT, srid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_PointFromText PointMSet(WKT, srid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT, srid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_PointFromText LineMSet(WKT, srid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT, srid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_PointFromText PolygonMSet(WKT, srid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT, srid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_PointFromText PointSet3D(WKT, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT, srid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_PointFromText LineSet3D(WKT, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT, srid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_PointFromText PolygonSet3D(WKT, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT, srid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_PointFromText GCSet3D(WKT, srid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointFromText(ST_AsText(foo1.the_geom), 4269))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointFromText(WKT, srid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_PointN PointSet(a_linestring, n): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointN(a_linestring, n)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_PointN LineSet(a_linestring, n): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointN(a_linestring, n)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_PointN PolySet(a_linestring, n): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointN(a_linestring, n)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_PointN PointMSet(a_linestring, n): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointN(a_linestring, n)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_PointN LineMSet(a_linestring, n): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointN(a_linestring, n)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_PointN PolygonMSet(a_linestring, n): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointN(a_linestring, n)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_PointN PointSet3D(a_linestring, n): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointN(a_linestring, n)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_PointN LineSet3D(a_linestring, n): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointN(a_linestring, n)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_PointN PolygonSet3D(a_linestring, n): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointN(a_linestring, n)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_PointN GCSet3D(a_linestring, n): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointN(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointN(a_linestring, n)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_PointOnSurface PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointOnSurface(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointOnSurface(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_PointOnSurface LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointOnSurface(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointOnSurface(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_PointOnSurface PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointOnSurface(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointOnSurface(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_PointOnSurface PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointOnSurface(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointOnSurface(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_PointOnSurface LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointOnSurface(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointOnSurface(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_PointOnSurface PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointOnSurface(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointOnSurface(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_PointOnSurface PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointOnSurface(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointOnSurface(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_PointOnSurface LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointOnSurface(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointOnSurface(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_PointOnSurface PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointOnSurface(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointOnSurface(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_PointOnSurface GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_PointOnSurface(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_PointOnSurface(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Polygon PointSet(aLineString, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygon(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Polygon(aLineString, srid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Polygon LineSet(aLineString, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygon(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Polygon(aLineString, srid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Polygon PolySet(aLineString, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygon(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Polygon(aLineString, srid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Polygon PointMSet(aLineString, srid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygon(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Polygon(aLineString, srid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Polygon LineMSet(aLineString, srid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygon(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Polygon(aLineString, srid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Polygon PolygonMSet(aLineString, srid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygon(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Polygon(aLineString, srid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Polygon PointSet3D(aLineString, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygon(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Polygon(aLineString, srid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Polygon LineSet3D(aLineString, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygon(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Polygon(aLineString, srid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Polygon PolygonSet3D(aLineString, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygon(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Polygon(aLineString, srid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Polygon GCSet3D(aLineString, srid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygon(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Polygon(aLineString, srid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Polygonize PointSet: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygonize(the_geom)),
+		ST_AsEWKT(ST_Polygonize(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo;  
+	COMMIT;
+	SELECT 'ST_Polygonize PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Polygonize LineSet: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygonize(the_geom)),
+		ST_AsEWKT(ST_Polygonize(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_Polygonize LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Polygonize PolySet: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygonize(the_geom)),
+		ST_AsEWKT(ST_Polygonize(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo;  
+	COMMIT;
+	SELECT 'ST_Polygonize PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Polygonize PointMSet: Start Testing Multi/POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygonize(the_geom)),
+		ST_AsEWKT(ST_Polygonize(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Polygonize PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Polygonize LineMSet: Start Testing Multi/LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygonize(the_geom)),
+		ST_AsEWKT(ST_Polygonize(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_Polygonize LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Polygonize PolygonMSet: Start Testing Multi/POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygonize(the_geom)),
+		ST_AsEWKT(ST_Polygonize(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Polygonize PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Polygonize PointSet3D: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygonize(the_geom)),
+		ST_AsEWKT(ST_Polygonize(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Polygonize PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Polygonize LineSet3D: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygonize(the_geom)),
+		ST_AsEWKT(ST_Polygonize(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Polygonize LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Polygonize PolygonSet3D: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygonize(the_geom)),
+		ST_AsEWKT(ST_Polygonize(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Polygonize PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Polygonize GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Polygonize(the_geom)),
+		ST_AsEWKT(ST_Polygonize(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Polygonize GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Relate PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Relate(foo1.the_geom, foo2.the_geom),
+				ST_Relate(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Relate PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Relate LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Relate(foo1.the_geom, foo2.the_geom),
+				ST_Relate(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Relate LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Relate PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Relate(foo1.the_geom, foo2.the_geom),
+				ST_Relate(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Relate PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Relate PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Relate(foo1.the_geom, foo2.the_geom),
+				ST_Relate(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Relate PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Relate LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Relate(foo1.the_geom, foo2.the_geom),
+				ST_Relate(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Relate LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Relate PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Relate(foo1.the_geom, foo2.the_geom),
+				ST_Relate(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Relate PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Relate PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Relate(foo1.the_geom, foo2.the_geom),
+				ST_Relate(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Relate PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Relate LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Relate(foo1.the_geom, foo2.the_geom),
+				ST_Relate(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Relate LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Relate PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Relate(foo1.the_geom, foo2.the_geom),
+				ST_Relate(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Relate PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Relate GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Relate(foo1.the_geom, foo2.the_geom),
+				ST_Relate(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Relate GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Relate PointSet(geomA, geomB, intersectionPatternMatrix): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Relate(foo1.the_geom, foo1.the_geom, 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Relate(geomA, geomB, intersectionPatternMatrix)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Relate LineSet(geomA, geomB, intersectionPatternMatrix): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Relate(foo1.the_geom, foo1.the_geom, 'monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Relate(geomA, geomB, intersectionPatternMatrix)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Relate PolySet(geomA, geomB, intersectionPatternMatrix): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Relate(foo1.the_geom, foo1.the_geom, 'monkey')
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Relate(geomA, geomB, intersectionPatternMatrix)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Relate PointMSet(geomA, geomB, intersectionPatternMatrix): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Relate(foo1.the_geom, foo1.the_geom, 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Relate(geomA, geomB, intersectionPatternMatrix)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Relate LineMSet(geomA, geomB, intersectionPatternMatrix): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Relate(foo1.the_geom, foo1.the_geom, 'monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Relate(geomA, geomB, intersectionPatternMatrix)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Relate PolygonMSet(geomA, geomB, intersectionPatternMatrix): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Relate(foo1.the_geom, foo1.the_geom, 'monkey')
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Relate(geomA, geomB, intersectionPatternMatrix)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Relate PointSet3D(geomA, geomB, intersectionPatternMatrix): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Relate(foo1.the_geom, foo1.the_geom, 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Relate(geomA, geomB, intersectionPatternMatrix)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Relate LineSet3D(geomA, geomB, intersectionPatternMatrix): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Relate(foo1.the_geom, foo1.the_geom, 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Relate(geomA, geomB, intersectionPatternMatrix)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Relate PolygonSet3D(geomA, geomB, intersectionPatternMatrix): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Relate(foo1.the_geom, foo1.the_geom, 'monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Relate(geomA, geomB, intersectionPatternMatrix)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Relate GCSet3D(geomA, geomB, intersectionPatternMatrix): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Relate(foo1.the_geom, foo1.the_geom, 'monkey')
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Relate(geomA, geomB, intersectionPatternMatrix)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_RemovePoint PointSet(linestring, offset): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RemovePoint(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RemovePoint(linestring, offset)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_RemovePoint LineSet(linestring, offset): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RemovePoint(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RemovePoint(linestring, offset)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_RemovePoint PolySet(linestring, offset): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RemovePoint(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RemovePoint(linestring, offset)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_RemovePoint PointMSet(linestring, offset): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RemovePoint(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RemovePoint(linestring, offset)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_RemovePoint LineMSet(linestring, offset): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RemovePoint(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RemovePoint(linestring, offset)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_RemovePoint PolygonMSet(linestring, offset): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RemovePoint(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RemovePoint(linestring, offset)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_RemovePoint PointSet3D(linestring, offset): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RemovePoint(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RemovePoint(linestring, offset)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_RemovePoint LineSet3D(linestring, offset): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RemovePoint(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RemovePoint(linestring, offset)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_RemovePoint PolygonSet3D(linestring, offset): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RemovePoint(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RemovePoint(linestring, offset)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_RemovePoint GCSet3D(linestring, offset): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RemovePoint(foo1.the_geom, 5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RemovePoint(linestring, offset)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Reverse PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Reverse(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Reverse(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Reverse LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Reverse(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Reverse(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Reverse PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Reverse(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Reverse(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Reverse PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Reverse(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Reverse(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Reverse LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Reverse(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Reverse(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Reverse PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Reverse(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Reverse(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Reverse PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Reverse(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Reverse(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Reverse LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Reverse(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Reverse(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Reverse PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Reverse(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Reverse(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Reverse GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Reverse(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Reverse(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Rotate PointSet(geomA, rotZRadians): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Rotate(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Rotate(geomA, rotZRadians)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Rotate LineSet(geomA, rotZRadians): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Rotate(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Rotate(geomA, rotZRadians)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Rotate PolySet(geomA, rotZRadians): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Rotate(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Rotate(geomA, rotZRadians)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Rotate PointMSet(geomA, rotZRadians): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Rotate(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Rotate(geomA, rotZRadians)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Rotate LineMSet(geomA, rotZRadians): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Rotate(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Rotate(geomA, rotZRadians)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Rotate PolygonMSet(geomA, rotZRadians): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Rotate(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Rotate(geomA, rotZRadians)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Rotate PointSet3D(geomA, rotZRadians): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Rotate(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Rotate(geomA, rotZRadians)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Rotate LineSet3D(geomA, rotZRadians): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Rotate(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Rotate(geomA, rotZRadians)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Rotate PolygonSet3D(geomA, rotZRadians): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Rotate(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Rotate(geomA, rotZRadians)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Rotate GCSet3D(geomA, rotZRadians): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Rotate(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Rotate(geomA, rotZRadians)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_RotateX PointSet(geomA, rotRadians): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateX(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateX(geomA, rotRadians)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_RotateX LineSet(geomA, rotRadians): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateX(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateX(geomA, rotRadians)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_RotateX PolySet(geomA, rotRadians): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateX(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateX(geomA, rotRadians)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_RotateX PointMSet(geomA, rotRadians): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateX(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateX(geomA, rotRadians)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_RotateX LineMSet(geomA, rotRadians): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateX(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateX(geomA, rotRadians)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_RotateX PolygonMSet(geomA, rotRadians): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateX(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateX(geomA, rotRadians)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_RotateX PointSet3D(geomA, rotRadians): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateX(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateX(geomA, rotRadians)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_RotateX LineSet3D(geomA, rotRadians): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateX(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateX(geomA, rotRadians)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_RotateX PolygonSet3D(geomA, rotRadians): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateX(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateX(geomA, rotRadians)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_RotateX GCSet3D(geomA, rotRadians): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateX(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateX(geomA, rotRadians)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_RotateY PointSet(geomA, rotRadians): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateY(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateY(geomA, rotRadians)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_RotateY LineSet(geomA, rotRadians): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateY(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateY(geomA, rotRadians)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_RotateY PolySet(geomA, rotRadians): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateY(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateY(geomA, rotRadians)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_RotateY PointMSet(geomA, rotRadians): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateY(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateY(geomA, rotRadians)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_RotateY LineMSet(geomA, rotRadians): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateY(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateY(geomA, rotRadians)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_RotateY PolygonMSet(geomA, rotRadians): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateY(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateY(geomA, rotRadians)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_RotateY PointSet3D(geomA, rotRadians): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateY(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateY(geomA, rotRadians)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_RotateY LineSet3D(geomA, rotRadians): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateY(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateY(geomA, rotRadians)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_RotateY PolygonSet3D(geomA, rotRadians): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateY(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateY(geomA, rotRadians)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_RotateY GCSet3D(geomA, rotRadians): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateY(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateY(geomA, rotRadians)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_RotateZ PointSet(geomA, rotRadians): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateZ(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateZ(geomA, rotRadians)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_RotateZ LineSet(geomA, rotRadians): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateZ(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateZ(geomA, rotRadians)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_RotateZ PolySet(geomA, rotRadians): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateZ(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateZ(geomA, rotRadians)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_RotateZ PointMSet(geomA, rotRadians): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateZ(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateZ(geomA, rotRadians)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_RotateZ LineMSet(geomA, rotRadians): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateZ(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateZ(geomA, rotRadians)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_RotateZ PolygonMSet(geomA, rotRadians): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateZ(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateZ(geomA, rotRadians)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_RotateZ PointSet3D(geomA, rotRadians): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateZ(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateZ(geomA, rotRadians)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_RotateZ LineSet3D(geomA, rotRadians): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateZ(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateZ(geomA, rotRadians)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_RotateZ PolygonSet3D(geomA, rotRadians): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateZ(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateZ(geomA, rotRadians)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_RotateZ GCSet3D(geomA, rotRadians): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_RotateZ(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_RotateZ(geomA, rotRadians)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Scale PointSet(geomA, XFactor, YFactor, ZFactor): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor, ZFactor)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Scale LineSet(geomA, XFactor, YFactor, ZFactor): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor, ZFactor)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Scale PolySet(geomA, XFactor, YFactor, ZFactor): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor, ZFactor)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Scale PointMSet(geomA, XFactor, YFactor, ZFactor): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor, ZFactor)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Scale LineMSet(geomA, XFactor, YFactor, ZFactor): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor, ZFactor)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Scale PolygonMSet(geomA, XFactor, YFactor, ZFactor): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor, ZFactor)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Scale PointSet3D(geomA, XFactor, YFactor, ZFactor): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor, ZFactor)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Scale LineSet3D(geomA, XFactor, YFactor, ZFactor): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor, ZFactor)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Scale PolygonSet3D(geomA, XFactor, YFactor, ZFactor): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor, ZFactor)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Scale GCSet3D(geomA, XFactor, YFactor, ZFactor): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor, ZFactor)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Scale PointSet(geomA, XFactor, YFactor): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Scale LineSet(geomA, XFactor, YFactor): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Scale PolySet(geomA, XFactor, YFactor): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Scale PointMSet(geomA, XFactor, YFactor): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Scale LineMSet(geomA, XFactor, YFactor): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Scale PolygonMSet(geomA, XFactor, YFactor): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Scale PointSet3D(geomA, XFactor, YFactor): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Scale LineSet3D(geomA, XFactor, YFactor): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Scale PolygonSet3D(geomA, XFactor, YFactor): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Scale GCSet3D(geomA, XFactor, YFactor): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Scale(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Scale(geomA, XFactor, YFactor)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Segmentize PointSet(geomA, max_length): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Segmentize(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Segmentize(geomA, max_length)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Segmentize LineSet(geomA, max_length): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Segmentize(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Segmentize(geomA, max_length)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Segmentize PolySet(geomA, max_length): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Segmentize(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Segmentize(geomA, max_length)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Segmentize PointMSet(geomA, max_length): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Segmentize(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Segmentize(geomA, max_length)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Segmentize LineMSet(geomA, max_length): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Segmentize(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Segmentize(geomA, max_length)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Segmentize PolygonMSet(geomA, max_length): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Segmentize(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Segmentize(geomA, max_length)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Segmentize PointSet3D(geomA, max_length): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Segmentize(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Segmentize(geomA, max_length)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Segmentize LineSet3D(geomA, max_length): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Segmentize(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Segmentize(geomA, max_length)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Segmentize PolygonSet3D(geomA, max_length): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Segmentize(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Segmentize(geomA, max_length)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Segmentize GCSet3D(geomA, max_length): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Segmentize(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Segmentize(geomA, max_length)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_SetPoint PointSet(linestring, zerobasedposition, point): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetPoint(foo1.the_geom, 5, foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetPoint(linestring, zerobasedposition, point)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SetPoint LineSet(linestring, zerobasedposition, point): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetPoint(foo1.the_geom, 5, foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetPoint(linestring, zerobasedposition, point)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SetPoint PolySet(linestring, zerobasedposition, point): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetPoint(foo1.the_geom, 5, foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetPoint(linestring, zerobasedposition, point)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SetPoint PointMSet(linestring, zerobasedposition, point): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetPoint(foo1.the_geom, 5, foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetPoint(linestring, zerobasedposition, point)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_SetPoint LineMSet(linestring, zerobasedposition, point): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetPoint(foo1.the_geom, 5, foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetPoint(linestring, zerobasedposition, point)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_SetPoint PolygonMSet(linestring, zerobasedposition, point): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetPoint(foo1.the_geom, 5, foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetPoint(linestring, zerobasedposition, point)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_SetPoint PointSet3D(linestring, zerobasedposition, point): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetPoint(foo1.the_geom, 5, foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetPoint(linestring, zerobasedposition, point)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SetPoint LineSet3D(linestring, zerobasedposition, point): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetPoint(foo1.the_geom, 5, foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetPoint(linestring, zerobasedposition, point)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SetPoint PolygonSet3D(linestring, zerobasedposition, point): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetPoint(foo1.the_geom, 5, foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetPoint(linestring, zerobasedposition, point)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SetPoint GCSet3D(linestring, zerobasedposition, point): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetPoint(foo1.the_geom, 5, foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetPoint(linestring, zerobasedposition, point)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_SetSRID PointSet(geom, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetSRID(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetSRID(geom, srid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SetSRID LineSet(geom, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetSRID(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetSRID(geom, srid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SetSRID PolySet(geom, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetSRID(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetSRID(geom, srid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SetSRID PointMSet(geom, srid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetSRID(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetSRID(geom, srid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_SetSRID LineMSet(geom, srid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetSRID(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetSRID(geom, srid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_SetSRID PolygonMSet(geom, srid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetSRID(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetSRID(geom, srid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_SetSRID PointSet3D(geom, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetSRID(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetSRID(geom, srid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SetSRID LineSet3D(geom, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetSRID(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetSRID(geom, srid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SetSRID PolygonSet3D(geom, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetSRID(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetSRID(geom, srid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SetSRID GCSet3D(geom, srid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SetSRID(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SetSRID(geom, srid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Shift_Longitude PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Shift_Longitude(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Shift_Longitude(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Shift_Longitude LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Shift_Longitude(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Shift_Longitude(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Shift_Longitude PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Shift_Longitude(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Shift_Longitude(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Shift_Longitude PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Shift_Longitude(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Shift_Longitude(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Shift_Longitude LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Shift_Longitude(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Shift_Longitude(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Shift_Longitude PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Shift_Longitude(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Shift_Longitude(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Shift_Longitude PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Shift_Longitude(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Shift_Longitude(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Shift_Longitude LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Shift_Longitude(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Shift_Longitude(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Shift_Longitude PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Shift_Longitude(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Shift_Longitude(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Shift_Longitude GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Shift_Longitude(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Shift_Longitude(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Simplify PointSet(geomA, tolerance): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Simplify(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Simplify(geomA, tolerance)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Simplify LineSet(geomA, tolerance): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Simplify(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Simplify(geomA, tolerance)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Simplify PolySet(geomA, tolerance): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Simplify(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Simplify(geomA, tolerance)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Simplify PointMSet(geomA, tolerance): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Simplify(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Simplify(geomA, tolerance)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Simplify LineMSet(geomA, tolerance): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Simplify(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Simplify(geomA, tolerance)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Simplify PolygonMSet(geomA, tolerance): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Simplify(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Simplify(geomA, tolerance)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Simplify PointSet3D(geomA, tolerance): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Simplify(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Simplify(geomA, tolerance)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Simplify LineSet3D(geomA, tolerance): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Simplify(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Simplify(geomA, tolerance)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Simplify PolygonSet3D(geomA, tolerance): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Simplify(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Simplify(geomA, tolerance)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Simplify GCSet3D(geomA, tolerance): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Simplify(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Simplify(geomA, tolerance)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_SimplifyPreserveTopology PointSet(geomA, tolerance): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SimplifyPreserveTopology(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SimplifyPreserveTopology(geomA, tolerance)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SimplifyPreserveTopology LineSet(geomA, tolerance): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SimplifyPreserveTopology(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SimplifyPreserveTopology(geomA, tolerance)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SimplifyPreserveTopology PolySet(geomA, tolerance): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SimplifyPreserveTopology(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SimplifyPreserveTopology(geomA, tolerance)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SimplifyPreserveTopology PointMSet(geomA, tolerance): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SimplifyPreserveTopology(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SimplifyPreserveTopology(geomA, tolerance)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_SimplifyPreserveTopology LineMSet(geomA, tolerance): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SimplifyPreserveTopology(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SimplifyPreserveTopology(geomA, tolerance)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_SimplifyPreserveTopology PolygonMSet(geomA, tolerance): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SimplifyPreserveTopology(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SimplifyPreserveTopology(geomA, tolerance)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_SimplifyPreserveTopology PointSet3D(geomA, tolerance): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SimplifyPreserveTopology(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SimplifyPreserveTopology(geomA, tolerance)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SimplifyPreserveTopology LineSet3D(geomA, tolerance): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SimplifyPreserveTopology(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SimplifyPreserveTopology(geomA, tolerance)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SimplifyPreserveTopology PolygonSet3D(geomA, tolerance): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SimplifyPreserveTopology(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SimplifyPreserveTopology(geomA, tolerance)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SimplifyPreserveTopology GCSet3D(geomA, tolerance): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SimplifyPreserveTopology(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SimplifyPreserveTopology(geomA, tolerance)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PointSet(geomA, originX, originY, sizeX, sizeY): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, originX, originY, sizeX, sizeY)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SnapToGrid LineSet(geomA, originX, originY, sizeX, sizeY): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, originX, originY, sizeX, sizeY)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PolySet(geomA, originX, originY, sizeX, sizeY): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, originX, originY, sizeX, sizeY)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PointMSet(geomA, originX, originY, sizeX, sizeY): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, originX, originY, sizeX, sizeY)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_SnapToGrid LineMSet(geomA, originX, originY, sizeX, sizeY): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, originX, originY, sizeX, sizeY)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PolygonMSet(geomA, originX, originY, sizeX, sizeY): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, originX, originY, sizeX, sizeY)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PointSet3D(geomA, originX, originY, sizeX, sizeY): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, originX, originY, sizeX, sizeY)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SnapToGrid LineSet3D(geomA, originX, originY, sizeX, sizeY): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, originX, originY, sizeX, sizeY)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PolygonSet3D(geomA, originX, originY, sizeX, sizeY): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, originX, originY, sizeX, sizeY)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SnapToGrid GCSet3D(geomA, originX, originY, sizeX, sizeY): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, originX, originY, sizeX, sizeY)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PointSet(geomA, sizeX, sizeY): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, sizeX, sizeY)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SnapToGrid LineSet(geomA, sizeX, sizeY): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, sizeX, sizeY)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PolySet(geomA, sizeX, sizeY): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, sizeX, sizeY)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PointMSet(geomA, sizeX, sizeY): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, sizeX, sizeY)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_SnapToGrid LineMSet(geomA, sizeX, sizeY): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, sizeX, sizeY)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PolygonMSet(geomA, sizeX, sizeY): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, sizeX, sizeY)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PointSet3D(geomA, sizeX, sizeY): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, sizeX, sizeY)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SnapToGrid LineSet3D(geomA, sizeX, sizeY): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, sizeX, sizeY)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PolygonSet3D(geomA, sizeX, sizeY): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, sizeX, sizeY)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SnapToGrid GCSet3D(geomA, sizeX, sizeY): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, sizeX, sizeY)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PointSet(geomA, size): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, size)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SnapToGrid LineSet(geomA, size): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, size)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PolySet(geomA, size): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, size)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PointMSet(geomA, size): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, size)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_SnapToGrid LineMSet(geomA, size): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, size)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PolygonMSet(geomA, size): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, size)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PointSet3D(geomA, size): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, size)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SnapToGrid LineSet3D(geomA, size): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, size)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PolygonSet3D(geomA, size): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, size)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SnapToGrid GCSet3D(geomA, size): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, size)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PointSet(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SnapToGrid LineSet(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PolySet(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PointMSet(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_SnapToGrid LineMSet(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PolygonMSet(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PointSet3D(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SnapToGrid LineSet3D(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SnapToGrid PolygonSet3D(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SnapToGrid GCSet3D(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_SnapToGrid(foo1.the_geom, foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SnapToGrid(geomA, pointOrigin, sizeX, sizeY, sizeZ, sizeM)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_SRID PointSet(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_SRID(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SRID(g1)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SRID LineSet(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_SRID(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SRID(g1)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SRID PolySet(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_SRID(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SRID(g1)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SRID PointMSet(g1): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_SRID(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SRID(g1)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_SRID LineMSet(g1): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_SRID(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SRID(g1)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_SRID PolygonMSet(g1): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_SRID(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SRID(g1)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_SRID PointSet3D(g1): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_SRID(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SRID(g1)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_SRID LineSet3D(g1): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_SRID(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SRID(g1)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_SRID PolygonSet3D(g1): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_SRID(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SRID(g1)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_SRID GCSet3D(g1): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_SRID(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_SRID(g1)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_StartPoint PointSet(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_StartPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_StartPoint(geomA)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_StartPoint LineSet(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_StartPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_StartPoint(geomA)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_StartPoint PolySet(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_StartPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_StartPoint(geomA)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_StartPoint PointMSet(geomA): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_StartPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_StartPoint(geomA)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_StartPoint LineMSet(geomA): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_StartPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_StartPoint(geomA)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_StartPoint PolygonMSet(geomA): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_StartPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_StartPoint(geomA)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_StartPoint PointSet3D(geomA): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_StartPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_StartPoint(geomA)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_StartPoint LineSet3D(geomA): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_StartPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_StartPoint(geomA)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_StartPoint PolygonSet3D(geomA): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_StartPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_StartPoint(geomA)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_StartPoint GCSet3D(geomA): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_StartPoint(foo1.the_geom))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_StartPoint(geomA)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Summary PointSet(g): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Summary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Summary(g)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Summary LineSet(g): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Summary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Summary(g)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Summary PolySet(g): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Summary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Summary(g)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Summary PointMSet(g): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Summary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Summary(g)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Summary LineMSet(g): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Summary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Summary(g)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Summary PolygonMSet(g): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Summary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Summary(g)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Summary PointSet3D(g): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Summary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Summary(g)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Summary LineSet3D(g): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Summary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Summary(g)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Summary PolygonSet3D(g): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Summary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Summary(g)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Summary GCSet3D(g): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Summary(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Summary(g)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_SymDifference PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_SymDifference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_SymDifference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_SymDifference PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_SymDifference LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_SymDifference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_SymDifference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_SymDifference LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_SymDifference PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_SymDifference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_SymDifference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_SymDifference PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_SymDifference PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_SymDifference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_SymDifference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_SymDifference PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_SymDifference LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_SymDifference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_SymDifference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_SymDifference LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_SymDifference PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_SymDifference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_SymDifference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_SymDifference PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_SymDifference PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_SymDifference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_SymDifference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_SymDifference PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_SymDifference LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_SymDifference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_SymDifference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_SymDifference LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_SymDifference PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_SymDifference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_SymDifference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_SymDifference PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_SymDifference GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_SymDifference(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_SymDifference(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_SymDifference GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Touches PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Touches(foo1.the_geom, foo2.the_geom),
+				ST_Touches(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Touches PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Touches LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Touches(foo1.the_geom, foo2.the_geom),
+				ST_Touches(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Touches LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Touches PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Touches(foo1.the_geom, foo2.the_geom),
+				ST_Touches(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Touches PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Touches PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Touches(foo1.the_geom, foo2.the_geom),
+				ST_Touches(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Touches PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Touches LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Touches(foo1.the_geom, foo2.the_geom),
+				ST_Touches(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Touches LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Touches PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Touches(foo1.the_geom, foo2.the_geom),
+				ST_Touches(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Touches PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Touches PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Touches(foo1.the_geom, foo2.the_geom),
+				ST_Touches(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Touches PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Touches LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Touches(foo1.the_geom, foo2.the_geom),
+				ST_Touches(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Touches LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Touches PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Touches(foo1.the_geom, foo2.the_geom),
+				ST_Touches(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Touches PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Touches GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Touches(foo1.the_geom, foo2.the_geom),
+				ST_Touches(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Touches GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Transform PointSet(g1, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Transform(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Transform(g1, srid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Transform LineSet(g1, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Transform(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Transform(g1, srid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Transform PolySet(g1, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Transform(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Transform(g1, srid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Transform PointMSet(g1, srid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Transform(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Transform(g1, srid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Transform LineMSet(g1, srid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Transform(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Transform(g1, srid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Transform PolygonMSet(g1, srid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Transform(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Transform(g1, srid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Transform PointSet3D(g1, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Transform(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Transform(g1, srid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Transform LineSet3D(g1, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Transform(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Transform(g1, srid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Transform PolygonSet3D(g1, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Transform(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Transform(g1, srid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Transform GCSet3D(g1, srid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Transform(foo1.the_geom, 4269))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Transform(g1, srid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Translate PointSet(g1, deltax, deltay): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Translate LineSet(g1, deltax, deltay): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Translate PolySet(g1, deltax, deltay): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Translate PointMSet(g1, deltax, deltay): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Translate LineMSet(g1, deltax, deltay): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Translate PolygonMSet(g1, deltax, deltay): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Translate PointSet3D(g1, deltax, deltay): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Translate LineSet3D(g1, deltax, deltay): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Translate PolygonSet3D(g1, deltax, deltay): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Translate GCSet3D(g1, deltax, deltay): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Translate PointSet(g1, deltax, deltay, deltaz): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay, deltaz)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Translate LineSet(g1, deltax, deltay, deltaz): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay, deltaz)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Translate PolySet(g1, deltax, deltay, deltaz): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay, deltaz)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Translate PointMSet(g1, deltax, deltay, deltaz): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay, deltaz)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Translate LineMSet(g1, deltax, deltay, deltaz): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay, deltaz)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Translate PolygonMSet(g1, deltax, deltay, deltaz): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay, deltaz)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Translate PointSet3D(g1, deltax, deltay, deltaz): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay, deltaz)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Translate LineSet3D(g1, deltax, deltay, deltaz): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay, deltaz)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Translate PolygonSet3D(g1, deltax, deltay, deltaz): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay, deltaz)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Translate GCSet3D(g1, deltax, deltay, deltaz): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Translate(foo1.the_geom, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Translate(g1, deltax, deltay, deltaz)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_TransScale PointSet(geomA, deltaX, deltaY, XFactor, YFactor): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_TransScale(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_TransScale(geomA, deltaX, deltaY, XFactor, YFactor)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_TransScale LineSet(geomA, deltaX, deltaY, XFactor, YFactor): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_TransScale(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_TransScale(geomA, deltaX, deltaY, XFactor, YFactor)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_TransScale PolySet(geomA, deltaX, deltaY, XFactor, YFactor): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_TransScale(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_TransScale(geomA, deltaX, deltaY, XFactor, YFactor)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_TransScale PointMSet(geomA, deltaX, deltaY, XFactor, YFactor): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_TransScale(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_TransScale(geomA, deltaX, deltaY, XFactor, YFactor)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_TransScale LineMSet(geomA, deltaX, deltaY, XFactor, YFactor): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_TransScale(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_TransScale(geomA, deltaX, deltaY, XFactor, YFactor)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_TransScale PolygonMSet(geomA, deltaX, deltaY, XFactor, YFactor): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_TransScale(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_TransScale(geomA, deltaX, deltaY, XFactor, YFactor)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_TransScale PointSet3D(geomA, deltaX, deltaY, XFactor, YFactor): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_TransScale(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_TransScale(geomA, deltaX, deltaY, XFactor, YFactor)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_TransScale LineSet3D(geomA, deltaX, deltaY, XFactor, YFactor): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_TransScale(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_TransScale(geomA, deltaX, deltaY, XFactor, YFactor)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_TransScale PolygonSet3D(geomA, deltaX, deltaY, XFactor, YFactor): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_TransScale(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_TransScale(geomA, deltaX, deltaY, XFactor, YFactor)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_TransScale GCSet3D(geomA, deltaX, deltaY, XFactor, YFactor): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_TransScale(foo1.the_geom, 0.5, 0.5, 0.5, 0.5))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_TransScale(geomA, deltaX, deltaY, XFactor, YFactor)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Union PointSet: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Union(the_geom)),
+		ST_AsEWKT(ST_Union(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo;  
+	COMMIT;
+	SELECT 'ST_Union PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Union LineSet: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Union(the_geom)),
+		ST_AsEWKT(ST_Union(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_Union LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Union PolySet: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Union(the_geom)),
+		ST_AsEWKT(ST_Union(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo;  
+	COMMIT;
+	SELECT 'ST_Union PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Union PointMSet: Start Testing Multi/POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Union(the_geom)),
+		ST_AsEWKT(ST_Union(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Union PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Union LineMSet: Start Testing Multi/LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Union(the_geom)),
+		ST_AsEWKT(ST_Union(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo;  
+	COMMIT;
+	SELECT 'ST_Union LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Union PolygonMSet: Start Testing Multi/POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Union(the_geom)),
+		ST_AsEWKT(ST_Union(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Union PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Union PointSet3D: Start Testing Multi/POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Union(the_geom)),
+		ST_AsEWKT(ST_Union(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Union PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Union LineSet3D: Start Testing Multi/LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Union(the_geom)),
+		ST_AsEWKT(ST_Union(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo;  
+	COMMIT;
+	SELECT 'ST_Union LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Union PolygonSet3D: Start Testing Multi/POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Union(the_geom)),
+		ST_AsEWKT(ST_Union(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Union PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Union GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_Union(the_geom)),
+		ST_AsEWKT(ST_Union(ST_Multi(the_geom)))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo;  
+	COMMIT;
+	SELECT 'ST_Union GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Union PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Union(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Union(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Union PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Union LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Union(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Union(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Union LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Union PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Union(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Union(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Union PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Union PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Union(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Union(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Union PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Union LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Union(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Union(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Union LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Union PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Union(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Union(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Union PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Union PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Union(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Union(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Union PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Union LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Union(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Union(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Union LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Union PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Union(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Union(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Union PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Union GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_AsEWKT(ST_Union(foo1.the_geom, foo2.the_geom)),
+	ST_AsEWKT(ST_Union(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom)))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Union GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+SELECT 'ST_Within PointSet: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Within(foo1.the_geom, foo2.the_geom),
+				ST_Within(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Within PointSet: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Within LineSet: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Within(foo1.the_geom, foo2.the_geom),
+				ST_Within(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Within LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Within PolySet: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Within(foo1.the_geom, foo2.the_geom),
+				ST_Within(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Within PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Within PointMSet: Start Testing Multi/POINTM'; 
+BEGIN; 
+			
+SELECT ST_Within(foo1.the_geom, foo2.the_geom),
+				ST_Within(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Within PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+SELECT 'ST_Within LineMSet: Start Testing Multi/LINESTRINGM'; 
+BEGIN; 
+			
+SELECT ST_Within(foo1.the_geom, foo2.the_geom),
+				ST_Within(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Within LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+SELECT 'ST_Within PolygonMSet: Start Testing Multi/POLYGONM'; 
+BEGIN; 
+			
+SELECT ST_Within(foo1.the_geom, foo2.the_geom),
+				ST_Within(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Within PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+SELECT 'ST_Within PointSet3D: Start Testing Multi/POINT'; 
+BEGIN; 
+			
+SELECT ST_Within(foo1.the_geom, foo2.the_geom),
+				ST_Within(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Within PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+SELECT 'ST_Within LineSet3D: Start Testing Multi/LINESTRING'; 
+BEGIN; 
+			
+SELECT ST_Within(foo1.the_geom, foo2.the_geom),
+				ST_Within(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Within LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+SELECT 'ST_Within PolygonSet3D: Start Testing Multi/POLYGON'; 
+BEGIN; 
+			
+SELECT ST_Within(foo1.the_geom, foo2.the_geom),
+				ST_Within(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Within PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+SELECT 'ST_Within GCSet3D: Start Testing Multi/GEOMETRYCOLLECTION'; 
+BEGIN; 
+			
+SELECT ST_Within(foo1.the_geom, foo2.the_geom),
+				ST_Within(ST_Multi(foo1.the_geom), ST_Multi(foo2.the_geom))
+			  
+		FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+		LIMIT 5;  
+COMMIT;
+SELECT 'ST_Within GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_WKBToSQL PointSet(WKB): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKBToSQL(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKBToSQL(WKB)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_WKBToSQL LineSet(WKB): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKBToSQL(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKBToSQL(WKB)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_WKBToSQL PolySet(WKB): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKBToSQL(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKBToSQL(WKB)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_WKBToSQL PointMSet(WKB): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKBToSQL(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKBToSQL(WKB)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_WKBToSQL LineMSet(WKB): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKBToSQL(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKBToSQL(WKB)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_WKBToSQL PolygonMSet(WKB): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKBToSQL(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKBToSQL(WKB)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_WKBToSQL PointSet3D(WKB): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKBToSQL(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKBToSQL(WKB)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_WKBToSQL LineSet3D(WKB): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKBToSQL(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKBToSQL(WKB)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_WKBToSQL PolygonSet3D(WKB): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKBToSQL(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKBToSQL(WKB)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_WKBToSQL GCSet3D(WKB): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKBToSQL(ST_AsBinary(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKBToSQL(WKB)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_WKTToSQL PointSet(WKT): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKTToSQL(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKTToSQL(WKT)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_WKTToSQL LineSet(WKT): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKTToSQL(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKTToSQL(WKT)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_WKTToSQL PolySet(WKT): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKTToSQL(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKTToSQL(WKT)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_WKTToSQL PointMSet(WKT): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKTToSQL(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKTToSQL(WKT)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_WKTToSQL LineMSet(WKT): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKTToSQL(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKTToSQL(WKT)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_WKTToSQL PolygonMSet(WKT): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKTToSQL(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKTToSQL(WKT)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_WKTToSQL PointSet3D(WKT): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKTToSQL(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKTToSQL(WKT)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_WKTToSQL LineSet3D(WKT): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKTToSQL(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKTToSQL(WKT)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_WKTToSQL PolygonSet3D(WKT): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKTToSQL(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKTToSQL(WKT)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_WKTToSQL GCSet3D(WKT): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_AsEWKT(ST_WKTToSQL(ST_AsText(foo1.the_geom)))
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_WKTToSQL(WKT)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_X PointSet(a_point): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_X(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_X(a_point)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_X LineSet(a_point): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_X(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_X(a_point)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_X PolySet(a_point): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_X(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_X(a_point)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_X PointMSet(a_point): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_X(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_X(a_point)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_X LineMSet(a_point): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_X(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_X(a_point)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_X PolygonMSet(a_point): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_X(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_X(a_point)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_X PointSet3D(a_point): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_X(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_X(a_point)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_X LineSet3D(a_point): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_X(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_X(a_point)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_X PolygonSet3D(a_point): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_X(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_X(a_point)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_X GCSet3D(a_point): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_X(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_X(a_point)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_XMax PointSet(aGeomorBox2DorBox3D): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_XMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMax(aGeomorBox2DorBox3D)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_XMax LineSet(aGeomorBox2DorBox3D): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_XMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMax(aGeomorBox2DorBox3D)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_XMax PolySet(aGeomorBox2DorBox3D): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_XMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMax(aGeomorBox2DorBox3D)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_XMax PointMSet(aGeomorBox2DorBox3D): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_XMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMax(aGeomorBox2DorBox3D)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_XMax LineMSet(aGeomorBox2DorBox3D): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_XMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMax(aGeomorBox2DorBox3D)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_XMax PolygonMSet(aGeomorBox2DorBox3D): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_XMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMax(aGeomorBox2DorBox3D)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_XMax PointSet3D(aGeomorBox2DorBox3D): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_XMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMax(aGeomorBox2DorBox3D)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_XMax LineSet3D(aGeomorBox2DorBox3D): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_XMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMax(aGeomorBox2DorBox3D)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_XMax PolygonSet3D(aGeomorBox2DorBox3D): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_XMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMax(aGeomorBox2DorBox3D)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_XMax GCSet3D(aGeomorBox2DorBox3D): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_XMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMax(aGeomorBox2DorBox3D)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_XMin PointSet(aGeomorBox2DorBox3D): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_XMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMin(aGeomorBox2DorBox3D)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_XMin LineSet(aGeomorBox2DorBox3D): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_XMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMin(aGeomorBox2DorBox3D)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_XMin PolySet(aGeomorBox2DorBox3D): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_XMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMin(aGeomorBox2DorBox3D)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_XMin PointMSet(aGeomorBox2DorBox3D): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_XMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMin(aGeomorBox2DorBox3D)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_XMin LineMSet(aGeomorBox2DorBox3D): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_XMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMin(aGeomorBox2DorBox3D)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_XMin PolygonMSet(aGeomorBox2DorBox3D): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_XMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMin(aGeomorBox2DorBox3D)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_XMin PointSet3D(aGeomorBox2DorBox3D): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_XMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMin(aGeomorBox2DorBox3D)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_XMin LineSet3D(aGeomorBox2DorBox3D): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_XMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMin(aGeomorBox2DorBox3D)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_XMin PolygonSet3D(aGeomorBox2DorBox3D): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_XMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMin(aGeomorBox2DorBox3D)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_XMin GCSet3D(aGeomorBox2DorBox3D): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_XMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_XMin(aGeomorBox2DorBox3D)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Y PointSet(a_point): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Y(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Y(a_point)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Y LineSet(a_point): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Y(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Y(a_point)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Y PolySet(a_point): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Y(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Y(a_point)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Y PointMSet(a_point): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Y(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Y(a_point)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Y LineMSet(a_point): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Y(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Y(a_point)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Y PolygonMSet(a_point): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Y(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Y(a_point)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Y PointSet3D(a_point): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Y(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Y(a_point)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Y LineSet3D(a_point): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Y(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Y(a_point)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Y PolygonSet3D(a_point): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Y(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Y(a_point)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Y GCSet3D(a_point): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Y(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Y(a_point)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_YMax PointSet(aGeomorBox2DorBox3D): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_YMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMax(aGeomorBox2DorBox3D)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_YMax LineSet(aGeomorBox2DorBox3D): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_YMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMax(aGeomorBox2DorBox3D)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_YMax PolySet(aGeomorBox2DorBox3D): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_YMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMax(aGeomorBox2DorBox3D)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_YMax PointMSet(aGeomorBox2DorBox3D): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_YMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMax(aGeomorBox2DorBox3D)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_YMax LineMSet(aGeomorBox2DorBox3D): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_YMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMax(aGeomorBox2DorBox3D)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_YMax PolygonMSet(aGeomorBox2DorBox3D): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_YMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMax(aGeomorBox2DorBox3D)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_YMax PointSet3D(aGeomorBox2DorBox3D): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_YMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMax(aGeomorBox2DorBox3D)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_YMax LineSet3D(aGeomorBox2DorBox3D): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_YMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMax(aGeomorBox2DorBox3D)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_YMax PolygonSet3D(aGeomorBox2DorBox3D): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_YMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMax(aGeomorBox2DorBox3D)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_YMax GCSet3D(aGeomorBox2DorBox3D): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_YMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMax(aGeomorBox2DorBox3D)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_YMin PointSet(aGeomorBox2DorBox3D): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_YMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMin(aGeomorBox2DorBox3D)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_YMin LineSet(aGeomorBox2DorBox3D): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_YMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMin(aGeomorBox2DorBox3D)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_YMin PolySet(aGeomorBox2DorBox3D): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_YMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMin(aGeomorBox2DorBox3D)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_YMin PointMSet(aGeomorBox2DorBox3D): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_YMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMin(aGeomorBox2DorBox3D)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_YMin LineMSet(aGeomorBox2DorBox3D): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_YMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMin(aGeomorBox2DorBox3D)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_YMin PolygonMSet(aGeomorBox2DorBox3D): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_YMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMin(aGeomorBox2DorBox3D)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_YMin PointSet3D(aGeomorBox2DorBox3D): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_YMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMin(aGeomorBox2DorBox3D)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_YMin LineSet3D(aGeomorBox2DorBox3D): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_YMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMin(aGeomorBox2DorBox3D)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_YMin PolygonSet3D(aGeomorBox2DorBox3D): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_YMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMin(aGeomorBox2DorBox3D)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_YMin GCSet3D(aGeomorBox2DorBox3D): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_YMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_YMin(aGeomorBox2DorBox3D)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_Z PointSet(a_point): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Z(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Z(a_point)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Z LineSet(a_point): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Z(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Z(a_point)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Z PolySet(a_point): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Z(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Z(a_point)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Z PointMSet(a_point): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_Z(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Z(a_point)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_Z LineMSet(a_point): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_Z(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Z(a_point)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_Z PolygonMSet(a_point): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_Z(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Z(a_point)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_Z PointSet3D(a_point): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_Z(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Z(a_point)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_Z LineSet3D(a_point): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_Z(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Z(a_point)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_Z PolygonSet3D(a_point): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_Z(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Z(a_point)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_Z GCSet3D(a_point): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_Z(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_Z(a_point)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_ZMax PointSet(aGeomorBox2DorBox3D): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_ZMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMax(aGeomorBox2DorBox3D)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_ZMax LineSet(aGeomorBox2DorBox3D): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_ZMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMax(aGeomorBox2DorBox3D)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_ZMax PolySet(aGeomorBox2DorBox3D): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_ZMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMax(aGeomorBox2DorBox3D)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_ZMax PointMSet(aGeomorBox2DorBox3D): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_ZMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMax(aGeomorBox2DorBox3D)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_ZMax LineMSet(aGeomorBox2DorBox3D): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_ZMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMax(aGeomorBox2DorBox3D)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_ZMax PolygonMSet(aGeomorBox2DorBox3D): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_ZMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMax(aGeomorBox2DorBox3D)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_ZMax PointSet3D(aGeomorBox2DorBox3D): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_ZMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMax(aGeomorBox2DorBox3D)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_ZMax LineSet3D(aGeomorBox2DorBox3D): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_ZMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMax(aGeomorBox2DorBox3D)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_ZMax PolygonSet3D(aGeomorBox2DorBox3D): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_ZMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMax(aGeomorBox2DorBox3D)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_ZMax GCSet3D(aGeomorBox2DorBox3D): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_ZMax(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMax(aGeomorBox2DorBox3D)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'ST_ZMin PointSet(aGeomorBox2DorBox3D): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_ZMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMin(aGeomorBox2DorBox3D)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_ZMin LineSet(aGeomorBox2DorBox3D): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_ZMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMin(aGeomorBox2DorBox3D)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_ZMin PolySet(aGeomorBox2DorBox3D): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_ZMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMin(aGeomorBox2DorBox3D)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_ZMin PointMSet(aGeomorBox2DorBox3D): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT ST_ZMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMin(aGeomorBox2DorBox3D)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'ST_ZMin LineMSet(aGeomorBox2DorBox3D): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT ST_ZMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMin(aGeomorBox2DorBox3D)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'ST_ZMin PolygonMSet(aGeomorBox2DorBox3D): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT ST_ZMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMin(aGeomorBox2DorBox3D)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'ST_ZMin PointSet3D(aGeomorBox2DorBox3D): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT ST_ZMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMin(aGeomorBox2DorBox3D)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'ST_ZMin LineSet3D(aGeomorBox2DorBox3D): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT ST_ZMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMin(aGeomorBox2DorBox3D)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'ST_ZMin PolygonSet3D(aGeomorBox2DorBox3D): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT ST_ZMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMin(aGeomorBox2DorBox3D)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'ST_ZMin GCSet3D(aGeomorBox2DorBox3D): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT ST_ZMin(foo1.the_geom)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'ST_ZMin(aGeomorBox2DorBox3D)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'UnlockRows PointSet(auth_token): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT UnlockRows('monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UnlockRows(auth_token)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'UnlockRows LineSet(auth_token): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT UnlockRows('monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UnlockRows(auth_token)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'UnlockRows PolySet(auth_token): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT UnlockRows('monkey')
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UnlockRows(auth_token)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'UnlockRows PointMSet(auth_token): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT UnlockRows('monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UnlockRows(auth_token)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'UnlockRows LineMSet(auth_token): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT UnlockRows('monkey')
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UnlockRows(auth_token)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'UnlockRows PolygonMSet(auth_token): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT UnlockRows('monkey')
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UnlockRows(auth_token)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'UnlockRows PointSet3D(auth_token): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT UnlockRows('monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UnlockRows(auth_token)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'UnlockRows LineSet3D(auth_token): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT UnlockRows('monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UnlockRows(auth_token)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'UnlockRows PolygonSet3D(auth_token): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT UnlockRows('monkey')
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UnlockRows(auth_token)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'UnlockRows GCSet3D(auth_token): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT UnlockRows('monkey')
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UnlockRows(auth_token)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PointSet(table_name, column_name, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(table_name, column_name, srid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID LineSet(table_name, column_name, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 4269)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(table_name, column_name, srid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PolySet(table_name, column_name, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 4269)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(table_name, column_name, srid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PointMSet(table_name, column_name, srid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(table_name, column_name, srid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID LineMSet(table_name, column_name, srid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 4269)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(table_name, column_name, srid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PolygonMSet(table_name, column_name, srid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 4269)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(table_name, column_name, srid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PointSet3D(table_name, column_name, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(table_name, column_name, srid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID LineSet3D(table_name, column_name, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(table_name, column_name, srid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PolygonSet3D(table_name, column_name, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(table_name, column_name, srid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID GCSet3D(table_name, column_name, srid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 4269)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(table_name, column_name, srid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PointSet(schema_name, table_name, column_name, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(schema_name, table_name, column_name, srid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID LineSet(schema_name, table_name, column_name, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(schema_name, table_name, column_name, srid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PolySet(schema_name, table_name, column_name, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(schema_name, table_name, column_name, srid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PointMSet(schema_name, table_name, column_name, srid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(schema_name, table_name, column_name, srid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID LineMSet(schema_name, table_name, column_name, srid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(schema_name, table_name, column_name, srid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PolygonMSet(schema_name, table_name, column_name, srid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(schema_name, table_name, column_name, srid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PointSet3D(schema_name, table_name, column_name, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(schema_name, table_name, column_name, srid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID LineSet3D(schema_name, table_name, column_name, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(schema_name, table_name, column_name, srid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PolygonSet3D(schema_name, table_name, column_name, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(schema_name, table_name, column_name, srid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID GCSet3D(schema_name, table_name, column_name, srid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(schema_name, table_name, column_name, srid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PointSet(catalog_name, schema_name, table_name, column_name, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_Point(i,j),4326) As the_geom 
+		FROM generate_series(-10,50,15) As i 
+			CROSS JOIN generate_series(40,70, 15) j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(catalog_name, schema_name, table_name, column_name, srid)  PointSet: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID LineSet(catalog_name, schema_name, table_name, column_name, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_Point(i,j),4326),ST_SetSRID(ST_Point(j,i),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 15) As j
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(catalog_name, schema_name, table_name, column_name, srid)  LineSet: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PolySet(catalog_name, schema_name, table_name, column_name, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo1 CROSS JOIN ((SELECT ST_Buffer(ST_SetSRID(ST_Point(i,j),4326), j)  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(40,70, 20) As j)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(catalog_name, schema_name, table_name, column_name, srid)  PolySet: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PointMSet(catalog_name, schema_name, table_name, column_name, srid): Start Testing POINTM'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePointM(i,j,m),4326) As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) AS j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(catalog_name, schema_name, table_name, column_name, srid)  PointMSet: End Testing Multi/POINTM';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID LineMSet(catalog_name, schema_name, table_name, column_name, srid): Start Testing LINESTRINGM'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo1 CROSS JOIN ((SELECT ST_MakeLine(ST_SetSRID(ST_MakePointM(i,j,m),4326),ST_SetSRID(ST_MakePointM(j,i,m),4326))  As the_geom 
+		FROM generate_series(-10,50,10) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			WHERE NOT(i = j))) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(catalog_name, schema_name, table_name, column_name, srid)  LineMSet: End Testing Multi/LINESTRINGM';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PolygonMSet(catalog_name, schema_name, table_name, column_name, srid): Start Testing POLYGONM'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo1 CROSS JOIN ((SELECT ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(catalog_name, schema_name, table_name, column_name, srid)  PolygonMSet: End Testing Multi/POLYGONM';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PointSet3D(catalog_name, schema_name, table_name, column_name, srid): Start Testing POINT'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePoint(i,j,k),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(catalog_name, schema_name, table_name, column_name, srid)  PointSet3D: End Testing Multi/POINT';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID LineSet3D(catalog_name, schema_name, table_name, column_name, srid): Start Testing LINESTRING'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakeLine(ST_MakePoint(i,j,k), ST_MakePoint(i+k,j+k,k)),4326) As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(40,70, 20) j
+			CROSS JOIN generate_series(1,2) k
+			)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(catalog_name, schema_name, table_name, column_name, srid)  LineSet3D: End Testing Multi/LINESTRING';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID PolygonSet3D(catalog_name, schema_name, table_name, column_name, srid): Start Testing POLYGON'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo1 CROSS JOIN ((SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(catalog_name, schema_name, table_name, column_name, srid)  PolygonSet3D: End Testing Multi/POLYGON';
+		
+		
+		
+	SELECT 'UpdateGeometrySRID GCSet3D(catalog_name, schema_name, table_name, column_name, srid): Start Testing GEOMETRYCOLLECTION'; 
+	BEGIN; 
+			
+	SELECT UpdateGeometrySRID('test', 'test', 'test', 'test', 4269)
+			  
+			FROM ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo1 CROSS JOIN ((SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326)))  As the_geom 
+		FROM generate_series(-10,50,20) As i 
+			CROSS JOIN generate_series(50,70, 20) As j
+			CROSS JOIN generate_series(1,2) As m
+			GROUP BY m)) As foo2
+			LIMIT 5;  
+	COMMIT;
+	SELECT 'UpdateGeometrySRID(catalog_name, schema_name, table_name, column_name, srid)  GCSet3D: End Testing Multi/GEOMETRYCOLLECTION';
+		
+		
+		
\ No newline at end of file


Property changes on: branches/1.3/regress/torturetest.sql
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native



More information about the postgis-commits mailing list