-- The coorddim_test table is created with the columns, geotype and g1.
-- The geotype column stores the name of the geometry subclass stored in
-- the g1 ST_Geometry column.

CREATE TABLE coorddim_test (geotype varchar(20),
                            g1      ST_Geometry);

-- The INSERT statements insert a sample of various subclasses
-- into the coorddim_test table.

INSERT INTO coorddim_test VALUES(
   'Point',
   ST_PointFromText('point (10.02 20.01)',1000)
);

INSERT INTO coorddim_test VALUES(
   'Point',
   ST_PointFromText('point z (10.02 20.01 3.21)',1000)
);

INSERT INTO coorddim_test VALUES(
   'LineString', 
   ST_LineFromText('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)',1000)
);

INSERT INTO coorddim_test VALUES(
   'LineString', 
   ST_LineFromText('linestring m (10.02 20.01 1.23, 10.32 23.98 4.56, 11.92 25.64 7.89)',1000)
);

INSERT INTO coorddim_test VALUES(
   'Polygon', 
   ST_PolyFromText('polygon ((10.02 20.01,11.92 35.64,25.02 34.15,19.15 33.94, 10.02 20.01))',1000)
);

INSERT INTO coorddim_test VALUES(
   'Polygon', 
   ST_PolyFromText('polygon zm ((10.02 20.01 9.87 1.23, 11.92 35.64 7.65 2.34, 25.02 34.15 6.54 3.45, 19.15 33.94 5.43 4.56, 10.02 20.01 9.87 1.23))',1000)
);

-- The SELECT statement lists the subclass name stored in the
-- geotype column with the dimension of that geotype.

SELECT geotype, ST_CoordDim(g1) coord_dimension
   FROM coorddim_test;
