CREATE TABLE POLYGEOM_dt(location GEOMETRY);
prepst#!#INSERT INTO POLYGEOM_dt(location) values(@location) #!#GEOMETRY|-|location|-|POLYGON ((1 4, 1 2, 2 2, 1 4)):4326
prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON EMPTY:4326
prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON ((1 1,4 5, 6 7, 1 1)):4326
prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON Z ((1 1 2, 1 2 3, 2 2 4, 1 1 2)):4326
prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON M ((1 1 2, 1 2 3, 2 2 4, 1 1 2)):4326
prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON ZM ((1 1 2 4, 1 2 3 5, 2 2 4 6, 1 1 2 7)):4326
prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON ((1 1, 1 2, 2 2, 1 1),(0 0, 10 0, 10 10, 0 10, 0 0)):4326
prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON Z ((1 1 2, 1 2 3, 2 2 4, 1 1 2), (0 0 5, 10 0 6, 10 10 6, 0 10 6, 0 0 2)):4326
prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON M ((1 1 2, 1 2 3, 2 2 4, 1 1 2), (0 0 5, 10 0 6, 10 10 6, 0 10 6, 0 0 2)):4326
prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON ZM ((1 1 2 4, 1 2 3 5, 2 2 4 6, 1 1 2 7), (0 0 5 6, 10 0 6 4, 10 10 6 4, 0 10 6 5, 0 0 2 6)):4326
#next seven lines are not allowed
#prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON ((1 1, 1 2, 2 2, 1 1)):1000000000
#prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON ((1 1, 1 2, 2 2, 1 1)):-1
#prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON ((1 1, 1 2, 2 2, 1 1)):<NULL>
#prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON ((1 1, 1 2, 2 2, 1 1)):10000000003
#prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON ((1 1, 1 2, 2 2, 1 1)):4326
#prepst#!#exec#!#GEOMETRY|-|location|-|POLYGON:4326
#prepst#!#exec#!#GEOMETRY|-|location|-|<NULL>:4326

CREATE TABLE POLYGEOG_dt(location GEOGRAPHY);
prepst#!#INSERT INTO POLYGEOG_dt(location) values(@location) #!#GEOGRAPHY|-|location|-|POLYGON ((1 4, 1 2, 2 2, 1 4)):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON EMPTY:4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON ((1 1,4 5, 6 7, 1 1)):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON Z ((1 1 2, 1 2 3, 2 2 4, 1 1 2)):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON M ((1 1 2, 1 2 3, 2 2 4, 1 1 2)):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON ZM ((1 1 2 4, 1 2 3 5, 2 2 4 6, 1 1 2 7)):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON ((1 1, 1 2, 2 2, 1 1),(0 0, 10 0, 10 10, 0 10, 0 0)):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON Z ((1 1 2, 1 2 3, 2 2 4, 1 1 2), (0 0 5, 10 0 6, 10 10 6, 0 10 6, 0 0 2)):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON M ((1 1 2, 1 2 3, 2 2 4, 1 1 2), (0 0 5, 10 0 6, 10 10 6, 0 10 6, 0 0 2)):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON ZM ((1 1 2 4, 1 2 3 5, 2 2 4 6, 1 1 2 7), (0 0 5 6, 10 0 6 4, 10 10 6 4, 0 10 6 5, 0 0 2 6)):4326
#next seven lines are not allowed
#prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON ((1 1, 1 2, 2 2, 1 1)):1000000000
#prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON ((1 1, 1 2, 2 2, 1 1)):-1
#prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON ((1 1, 1 2, 2 2, 1 1)):<NULL>
#prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON ((1 1, 1 2, 2 2, 1 1)):10000000003
#prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON ((1 1, 1 2, 2 2, 1 1)):4326
#prepst#!#exec#!#GEOGRAPHY|-|location|-|POLYGON:4326
#prepst#!#exec#!#GEOGRAPHY|-|location|-|<NULL>:4326

INSERT INTO POLYGEOM_dt(location) values(geometry::STGeomFromText('POLYGON((1 1 NULL, 1 2 3, 2 2 4, 1 1 NULL))', 4326))
INSERT INTO POLYGEOM_dt(location) values(geometry::STGeomFromText('POLYGON((0 0, 2 0, 4 1, 5 2, 6 4, 6 6, 5 8, 4 9, 2 10, 0 10, -1 8, -1 2, 0 0),(2 2, 3 2, 3 3, 2 3, 2 2))', 4326))
INSERT INTO POLYGEOM_dt(location) values(geometry::STGeomFromText('POLYGON((1 2, 3 5, 6, 1 2))', 4326))
INSERT INTO POLYGEOM_dt(location) values(geometry::STGeomFromText('POLYGON EMPTY', 4326))

INSERT INTO POLYGEOG_dt(location) values(geography::STGeomFromText('POLYGON((1 1 NULL, 1 2 3, 2 2 4, 1 1 NULL))', 4326))
INSERT INTO POLYGEOG_dt(location) values(geography::STGeomFromText('POLYGON((0 0, 2 0, 4 1, 5 2, 6 4, 6 6, 5 8, 4 9, 2 10, 0 10, -1 8, -1 2, 0 0),(2 2, 3 2, 3 3, 2 3, 2 2))', 4326))
INSERT INTO POLYGEOG_dt(location) values(geography::STGeomFromText('POLYGON((1 2, 3 5, 6, 1 2))', 4326))
INSERT INTO POLYGEOG_dt(location) values(geography::STGeomFromText('POLYGON EMPTY', 4326))

SELECT * FROM  POLYGEOM_dt;
SELECT * FROM  POLYGEOG_dt;

CREATE TABLE POLYGON_EMP_dt(geom GEOMETRY, geog GEOGRAPHY);
prepst#!#INSERT INTO POLYGON_EMP_dt(geom) values(@geom) #!#GEOMETRY|-|geom|-|POLYGON EMPTY:4326
prepst#!#INSERT INTO POLYGON_EMP_dt(geog) values(@geog) #!#GEOGRAPHY|-|geog|-|POLYGON EMPTY:4326
prepst#!#INSERT INTO POLYGON_EMP_dt(geom) values(@geom) #!#GEOMETRY|-|geom|-|POLYGON EMPTY:0
prepst#!#INSERT INTO POLYGON_EMP_dt(geog) values(@geog) #!#GEOGRAPHY|-|geog|-|POLYGON EMPTY:4121
SELECT geom.STAsText(), geog.STAsText() FROM POLYGON_EMP_dt;
SELECT geom.STDimension(), geog.STDimension() FROM POLYGON_EMP_dt;
SELECT geom.STIsClosed(), geog.STIsClosed() FROM POLYGON_EMP_dt;
SELECT geom.STIsValid(), geog.STIsValid() FROM POLYGON_EMP_dt;
SELECT geom.STAsBinary(), geog.STAsBinary() FROM POLYGON_EMP_dt;
SELECT geom.STArea(), geog.STArea() FROM POLYGON_EMP_dt;

DROP TABLE IF EXISTS POLYGEOM_dt;
DROP TABLE IF EXISTS POLYGEOG_dt;
DROP TABLE IF EXISTS POLYGON_EMP_dt;
