# Geometry Test Cases

CREATE TABLE GEOSPATIALLINEGEOM_dt (location geometry)
ALTER TABLE GEOSPATIALLINEGEOM_dt ADD id INT IDENTITY(1,1);

# Positive Test for STGeomFromText with SRID 4326
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(3 5, 2 4)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STLineFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STLineFromText('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)', 4326));


INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(3 5 4, 2 4 7)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(1 3 2, 5 7 6 , 4 5)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STLineFromText('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)', 4326));


INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STLineFromText('LINESTRING(3 5  NULL 4, 2 4 )', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STLineFromText('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STLineFromText('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STLineFromText('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)', 4326));


INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(3 5 4 5, 2 4 7 2)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)', 4326));


INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(3 5 5, 2 4 NULL 2)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)', 4326));


INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(-1 -2, -3 -4)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(5 3, 4.5 2, 3 1)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(1 2, 3 7)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(0 1, 2 5, 4 6)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STLineFromText('LINESTRING(-3 2, -1 7, -2 3)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES (geometry::STGeomFromText('LINESTRING EMPTY', 4326));


# Negative Test when SRID is not valid
# SRID should be between 0 to 999999
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES ( geometry::STGeomFromText('LINESTRING(1 2, 3 7)') );
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES ( geometry::STGeomFromText('LINESTRING(5 3, 4.5 2, 3 1)', 1000000000 ) );
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES ( geometry::STLineFromText('LINESTRING(1 2, 3 5, 6 4)', -1) );

# Negative Test for STLineFromText when a coordinate is missing
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES ( geometry::STLineFromText('LINESTRING(1 2, 3 5, 6 )', 4326) );

#  Negative Test for STGeomFromText when Incorrect cast is provided
INSERT INTO GEOSPATIALLINEGEOM_dt (location) VALUES ( geography::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326) );

CREATE TABLE GEOSPATIALPOINTGEOM_linesr (location geometry)
ALTER TABLE GEOSPATIALPOINTGEOM_linesr ADD id INT IDENTITY(1,1);

INSERT INTO GEOSPATIALPOINTGEOM_linesr (location) VALUES (geometry::STGeomFromText('LINESTRING EMPTY', 4326));
INSERT INTO GEOSPATIALPOINTGEOM_linesr (location) VALUES ( geometry::STGeomFromText('Point(47.65100 -22.34900 )', 4326) );
INSERT INTO GEOSPATIALPOINTGEOM_linesr (location) VALUES ( geometry::STGeomFromText('Point(47.65100 -22.34900 32.546000)', 4326) );
INSERT INTO GEOSPATIALPOINTGEOM_linesr (location) VALUES ( geometry::STGeomFromText('Point(47.65100 -22.34900  NULL 32.546000)', 4326) );
INSERT INTO GEOSPATIALPOINTGEOM_linesr (location) VALUES ( geometry::STGeomFromText('Point(47.65100 -22.34900 32.546000  54.56300)', 4326) );
INSERT INTO GEOSPATIALPOINTGEOM_linesr (location) VALUES ( geometry::STGeomFromText('POINT EMPTY', 4326) );

#Test with invalid instances
CREATE TABLE GEOSPATIALLINEGEOM_INVALID_dt (location geometry)
ALTER TABLE GEOSPATIALLINEGEOM_INVALID_dt ADD id INT IDENTITY(1,1);

INSERT INTO GEOSPATIALLINEGEOM_INVALID_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(1 2, 1 2)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_INVALID_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(1 2, 1 2 3)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_INVALID_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(1 2, 1 2 NULL 4)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_INVALID_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(1 2, 1 2 5 6)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_INVALID_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(7 3, 7 3,  7 3)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_INVALID_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(7 3, 7 3 4,  7 3 4)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_INVALID_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(7 3, 7 3 NULL 4,  7 3)', 4326));
INSERT INTO GEOSPATIALLINEGEOM_INVALID_dt (location) VALUES (geometry::STGeomFromText('LINESTRING(7 3, 7 3 5 4,  7 3)', 4326));

CREATE VIEW DimOfGeometryline AS SELECT location.STAsText() AS geometry, location.STDimension() AS dimension FROM GEOSPATIALLINEGEOM_dt ORDER BY id;

CREATE VIEW AreaOfGeometryline AS SELECT location.STAsText() AS geometry, location.STArea() AS area FROM GEOSPATIALLINEGEOM_dt ORDER BY id;

CREATE VIEW TextFromGeometryline AS SELECT location.STAsText() AS text FROM GEOSPATIALLINEGEOM_dt ORDER BY id;

CREATE VIEW BinaryFromGeometryline AS SELECT location.STAsText() AS geometry, location.STAsBinary() AS binary FROM GEOSPATIALLINEGEOM_dt ORDER BY id;

CREATE VIEW SridFromGeometryline AS SELECT location.STAsText() AS geometry, location.STSrid AS srid FROM GEOSPATIALLINEGEOM_dt ORDER BY id;

CREATE VIEW EmptyGeometryline AS SELECT location.STAsText() AS geometry, location.STIsEmpty() AS isempty FROM GEOSPATIALLINEGEOM_dt ORDER BY id;

CREATE VIEW ValidGeometryline AS SELECT location.STAsText() AS geometry, location.STIsValid() AS isvalid FROM GEOSPATIALLINEGEOM_dt ORDER BY id;

CREATE VIEW ClosedGeometryline AS SELECT location.STAsText() AS geometry, location.STIsClosed() AS isclosed FROM GEOSPATIALLINEGEOM_dt ORDER BY id;

CREATE VIEW DisjointTempGeomline AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STDisjoint(p2.location) AS disjoints FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALLINEGEOM_dt p2 ORDER BY p1.id;

CREATE VIEW DistanceTempGeomline AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2,  CAST(STDistance( p1.location, p2.location ) AS numeric(20, 6)) AS distance FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALLINEGEOM_dt p2 ORDER BY p1.id;

CREATE VIEW IntersectsTempGeomline AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STIntersects(p2.location) AS interesecting FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALLINEGEOM_dt p2 ORDER BY p1.id;

CREATE VIEW EqualsTempGeomline AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STEquals(p2.location) AS equals FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALLINEGEOM_dt p2 ORDER BY p1.id;

CREATE VIEW ContainTempGeomline AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STContains(p2.location) AS contain FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALLINEGEOM_dt p2 ORDER BY p1.id;

CREATE VIEW equals_opgeomline AS SELECT p1.location AS point FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALLINEGEOM_dt p2 WHERE p1.location = p2.location ORDER BY p1.id;

CREATE VIEW notequal_opgeomline AS SELECT p1.location AS point FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALLINEGEOM_dt p2 WHERE p1.location <> p2.location ORDER BY p1.id;


CREATE VIEW DisjointTempGeomlinesr AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STDisjoint(p2.location) AS disjoints FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALPOINTGEOM_linesr p2 ORDER BY p1.id;

CREATE VIEW DistanceTempGeomlinesr AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2,  CAST(STDistance( p1.location, p2.location ) AS numeric(20, 6)) AS distance FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALPOINTGEOM_linesr p2 ORDER BY p1.id;

CREATE VIEW IntersectsTempGeomlinesr AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STIntersects(p2.location) AS interesecting FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALPOINTGEOM_linesr p2 ORDER BY p1.id;

CREATE VIEW EqualsTempGeomlinesr AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STEquals(p2.location) AS equals FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALPOINTGEOM_linesr p2 ORDER BY p1.id;

CREATE VIEW ContainTempGeomlinesr AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STContains(p2.location) AS contain FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALPOINTGEOM_linesr p2 ORDER BY p1.id;

CREATE VIEW equals_opgeomlinesr AS SELECT p1.location AS point FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALPOINTGEOM_linesr p2 WHERE p1.location = p2.location ORDER BY p1.id;

CREATE VIEW notequal_opgeomlinesr AS SELECT p1.location AS point FROM GEOSPATIALLINEGEOM_dt p1 CROSS JOIN GEOSPATIALPOINTGEOM_linesr p2 WHERE p1.location <> p2.location ORDER BY p1.id;

CREATE VIEW LineGeomFromText AS SELECT geometry::STLineFromText('LINESTRING(3 5, 2 4)', 4326) AS geom1, geometry::STLineFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326) AS geom2;


CREATE TABLE geometryAsVarbinaryline ( ID INT IDENTITY(1,1) PRIMARY KEY, geometryData VARBINARY(500) );

INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(3 5, 2 4)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(3 5 4, 2 4 7)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 3 2, 5 7 6 , 4 5)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(3 5  NULL 4, 2 4 )', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(3 5 4 5, 2 4 7 2)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(3 5 5, 2 4 NULL 2)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(-1 -2, -3 -4)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(5 3, 4.5 2, 3 1)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 2, 3 7)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(0 1, 2 5, 4 6)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(-3 2, -1 7, -2 3)', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING EMPTY', 4326) AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline(geometryData)VALUES(CAST(geometry::STGeomFromText('LINESTRING(1 2,1 2)',4326)AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline(geometryData)VALUES(CAST(geometry::STGeomFromText('LINESTRING(1 2,1 2 3)',4326)AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline(geometryData)VALUES(CAST(geometry::STGeomFromText('LINESTRING(1 2,1 2 NULL 4)',4326)AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline(geometryData)VALUES(CAST(geometry::STGeomFromText('LINESTRING(1 2,1 2 5 6)',4326)AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline(geometryData)VALUES(CAST(geometry::STGeomFromText('LINESTRING(7 3,7 3,7 3)',4326)AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline(geometryData)VALUES(CAST(geometry::STGeomFromText('LINESTRING(7 3,7 3 4,7 3 4)',4326)AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline(geometryData)VALUES(CAST(geometry::STGeomFromText('LINESTRING(7 3,7 3 NULL 4,7 3)',4326)AS VARBINARY(500)));
INSERT INTO geometryAsVarbinaryline(geometryData)VALUES(CAST(geometry::STGeomFromText('LINESTRING(7 3,7 3 5 4,7 3)',4326)AS VARBINARY(500)));

CREATE TABLE geometryAsVarcharline ( ID INT IDENTITY(1,1) PRIMARY KEY, geometryData VARCHAR(500) );

INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(3 5, 2 4)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(3 5 4, 2 4 7)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 3 2, 5 7 6 , 4 5)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(3 5  NULL 4, 2 4 )', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(3 5 4 5, 2 4 7 2)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(3 5 5, 2 4 NULL 2)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(-1 -2, -3 -4)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(5 3, 4.5 2, 3 1)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 2, 3 7)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(0 1, 2 5, 4 6)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(-3 2, -1 7, -2 3)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING EMPTY', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 2,1 2)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 2,1 2 3)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 2,1 2 NULL 4)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(1 2,1 2 5 6)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(7 3,7 3,7 3)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(7 3,7 3 4,7 3 4)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(7 3,7 3 NULL 4,7 3)', 4326) AS VARCHAR(500)));
INSERT INTO geometryAsVarcharline (geometryData) VALUES (CAST(geometry::STGeomFromText('LINESTRING(7 3,7 3 5 4,7 3)', 4326) AS VARCHAR(500)));

CREATE TABLE CharAsVarbinaryGeomline ( ID INT IDENTITY(1,1) PRIMARY KEY, geometryData VARBINARY(500) );

INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(3 5, 2 4)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(1 3, 5 7, 4 5 NULL NULL)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)' AS CHAR(500)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(3 5 4, 2 4 7)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(1 3 2, 5 7 6 , 4 5)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)' AS CHAR(500)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(3 5  NULL 4, 2 4 )' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)' AS CHAR(300)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)' AS CHAR(500)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(3 5 4 5, 2 4 7 2)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)' AS CHAR(300)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)' AS CHAR(500)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(3 5 5, 2 4 NULL 2)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)' AS CHAR(300)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)' AS CHAR(500)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(1 2, 3 5, 6 4)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(-1 -2, -3 -4)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(5 3, 4.5 2, 3 1)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(1 2, 3 7)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(0 1, 2 5, 4 6)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(-3 2, -1 7, -2 3)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING EMPTY' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(1 2,1 2)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(1 2,1 2 3)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(1 2,1 2 NULL 4)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(1 2,1 2 5 6)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(7 3,7 3,7 3)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(7 3,7 3 4,7 3 4)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(7 3,7 3 NULL 4,7 3)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeomline (geometryData) VALUES (CAST(geometry::STGeomFromText(CAST('LINESTRING(7 3,7 3 5 4,7 3)' AS CHAR(50)), 4326) AS VARBINARY(500)));


CREATE TABLE VarbinaryAsgeometryline ( ID INT IDENTITY(1,1) PRIMARY KEY, geometryData geometry );

INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(3 5, 2 4)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)', 4326) AS VARBINARY(300)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(3 5 4, 2 4 7)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 3 2, 5 7 6 , 4 5)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)', 4326) AS VARBINARY(300)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(3 5  NULL 4, 2 4 )', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)', 4326) AS VARBINARY(300)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(3 5 4 5, 2 4 7 2)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)', 4326) AS VARBINARY(500)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(3 5 5, 2 4 NULL 2)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)', 4326) AS VARBINARY(500)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(-1 -2, -3 -4)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(5 3, 4.5 2, 3 1)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 2, 3 7)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(0 1, 2 5, 4 6)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(-3 2, -1 7, -2 3)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING EMPTY', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 2,1 2)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 2,1 2 3)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 2,1 2 NULL 4)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 2,1 2 5 6)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(7 3,7 3,7 3)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(7 3,7 3 4,7 3 4)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(7 3,7 3 NULL 4,7 3)', 4326) AS VARBINARY(200)) AS geometry));
INSERT INTO VarbinaryAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(7 3,7 3 5 4,7 3)', 4326) AS VARBINARY(200)) AS geometry));

CREATE TABLE CharAsgeometryline ( ID INT IDENTITY(1,1) PRIMARY KEY, geometryData geometry );

INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(3 5, 2 4)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(1 3, 5 7, 4 5 NULL NULL)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(3 5 4, 2 4 7)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(1 3 2, 5 7 6 , 4 5)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(3 5  NULL 4, 2 4 )' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(3 5 4 5, 2 4 7 2)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(3 5 5, 2 4 NULL 2)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(1 2, 3 5, 6 4)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(-1 -2, -3 -4)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(5 3, 4.5 2, 3 1)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(1 2, 3 7)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(0 1, 2 5, 4 6)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING(-3 2, -1 7, -2 3)' AS geometry));
INSERT INTO CharAsgeometryline (geometryData) VALUES (CAST('LINESTRING EMPTY' AS geometry));

CREATE TABLE VarcharAsgeometryline ( ID INT IDENTITY(1,1) PRIMARY KEY, geometryData geometry );

INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(3 5, 2 4)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(1 3, 5 7, 4 5 NULL NULL)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(3 5 4, 2 4 7)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(1 3 2, 5 7 6 , 4 5)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)' AS VARCHAR(300)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(3 5  NULL 4, 2 4 )' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)' AS VARCHAR(300)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(3 5 4 5, 2 4 7 2)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)' AS VARCHAR(300)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(3 5 5, 2 4 NULL 2)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)' AS VARCHAR(300)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(1 2, 3 5, 6 4)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(-1 -2, -3 -4)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(5 3, 4.5 2, 3 1)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(1 2, 3 7)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(0 1, 2 5, 4 6)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING(-3 2, -1 7, -2 3)' AS VARCHAR(500)) AS geometry));
INSERT INTO VarcharAsgeometryline (geometryData) VALUES (CAST(CAST('LINESTRING EMPTY' AS VARCHAR(500)) AS geometry));

CREATE TABLE GeoVarcharAsgeometryline ( ID INT IDENTITY(1,1) PRIMARY KEY, geometryData geometry );

INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(3 5, 2 4)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(3 5 4, 2 4 7)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 3 2, 5 7 6 , 4 5)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(3 5  NULL 4, 2 4 )', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(3 5 4 5, 2 4 7 2)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(3 5 5, 2 4 NULL 2)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(-1 -2, -3 -4)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(5 3, 4.5 2, 3 1)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(1 2, 3 7)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(0 1, 2 5, 4 6)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING(-3 2, -1 7, -2 3)', 4326) AS VARCHAR(500)) AS geometry));
INSERT INTO GeoVarcharAsgeometryline (geometryData) VALUES (CAST(CAST(geometry::STGeomFromText('LINESTRING EMPTY', 4326) AS VARCHAR(500)) AS geometry));

CREATE TABLE ByteaTogeometryline (ID INT PRIMARY KEY, bytea_line VARBINARY(500) );

INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (1, 0xE610000001140000000000000840000000000000144000000000000000400000000000001040);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (2, 0xE6100000010403000000000000000000F03F000000000000084000000000000014400000000000001C400000000000001040000000000000144001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (3, 0xE610000001040B00000000000000000010400000000000001440000000000000F03F000000000000F03F00000000000000400000000000000040000000000000084000000000000008400000000000001040000000000000104000000000000014400000000000001440000000000000184000000000000018400000000000001C400000000000001C4000000000000020400000000000002040000000000000224000000000000022400000000000002440000000000000244001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (4, 0xE6100000010405000000000000000000004000000000000008C00000000000001040000000000000F0BF000000000000084000000000000000C0000000000000104000000000000018400000000000000840000000000000184001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (5, 0xE61000000115000000000000084000000000000014400000000000000040000000000000104000000000000010400000000000001C40);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (6, 0xE6100000010503000000000000000000F03F000000000000084000000000000014400000000000001C400000000000001040000000000000144000000000000000400000000000001840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (7, 0xE610000001050B00000000000000000010400000000000001440000000000000F03F000000000000F03F00000000000000400000000000000040000000000000084000000000000008400000000000001040000000000000104000000000000014400000000000001440000000000000184000000000000018400000000000001C400000000000001C40000000000000204000000000000020400000000000002240000000000000224000000000000024400000000000002440000000000000F8FF0000000000000840000000000000144000000000000000400000000000001040000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF0000000000001040000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (8, 0xE6100000010505000000000000000000004000000000000008C00000000000001040000000000000F0BF000000000000084000000000000000C0000000000000104000000000000018400000000000000840000000000000184000000000000014C0000000000000F8FF0000000000001440000000000000F8FF000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (9, 0xE6100000011600000000000008400000000000001440000000000000004000000000000010400000000000001040000000000000F8FF);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (10, 0xE6100000010603000000000000000000F03F000000000000084000000000000014400000000000001C400000000000001040000000000000144000000000000008400000000000001440000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (11, 0xE610000001060B00000000000000000010400000000000001440000000000000F03F000000000000F03F00000000000000400000000000000040000000000000084000000000000008400000000000001040000000000000104000000000000014400000000000001440000000000000184000000000000018400000000000001C400000000000001C40000000000000204000000000000020400000000000002240000000000000224000000000000024400000000000002440000000000000F8FF000000000000104000000000000014400000000000000040000000000000F8FF000000000000F8FF00000000000020400000000000002240000000000000F8FF000000000000F8FF000000000000104001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (12, 0xE6100000010605000000000000000000004000000000000008C00000000000001040000000000000F0BF000000000000084000000000000000C0000000000000104000000000000018400000000000000840000000000000184000000000000014C0000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (13, 0xE61000000117000000000000084000000000000014400000000000000040000000000000104000000000000010400000000000001C4000000000000014400000000000000040);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (14, 0xE6100000010703000000000000000000F03F000000000000084000000000000014400000000000001C4000000000000010400000000000001440000000000000F8FF000000000000184000000000000000400000000000001C40000000000000F8FF000000000000184001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (15, 0xE610000001070B00000000000000000010400000000000001440000000000000F03F000000000000F03F00000000000000400000000000000040000000000000084000000000000008400000000000001040000000000000104000000000000014400000000000001440000000000000184000000000000018400000000000001C400000000000001C400000000000002040000000000000204000000000000022400000000000002240000000000000244000000000000024400000000000000040000000000000084000000000000014400000000000000040000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF000000000000104000000000000010400000000000001440000000000000F8FF000000000000F8FF000000000000F8FF0000000000001040000000000000F8FF0000000000001440000000000000F8FF000000000000F8FF000000000000F8FF000000000000184001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (16, 0xE6100000010705000000000000000000004000000000000008C00000000000001040000000000000F0BF000000000000084000000000000000C0000000000000104000000000000018400000000000000840000000000000184000000000000014C0000000000000F8FF00000000000014400000000000000840000000000000F8FF00000000000024C0000000000000F8FF000000000000F8FF0000000000001440000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (17, 0xE6100000011700000000000008400000000000001440000000000000004000000000000010400000000000001440000000000000F8FF000000000000F8FF0000000000000040);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (18, 0xE6100000010703000000000000000000F03F000000000000084000000000000014400000000000001C4000000000000010400000000000001440000000000000F8FF000000000000184000000000000000400000000000001C40000000000000F8FF000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (19, 0xE610000001070B00000000000000000010400000000000001440000000000000F03F000000000000F03F00000000000000400000000000000040000000000000084000000000000008400000000000001040000000000000104000000000000014400000000000001440000000000000184000000000000018400000000000001C400000000000001C400000000000002040000000000000204000000000000022400000000000002240000000000000244000000000000024400000000000000040000000000000084000000000000014400000000000000040000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF00000000000010400000000000001040000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF0000000000001040000000000000F8FF0000000000001440000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (20, 0xE6100000010705000000000000000000004000000000000008C00000000000001040000000000000F0BF000000000000084000000000000000C0000000000000104000000000000018400000000000000840000000000000184000000000000024C0000000000000F8FF000000000000F8FF0000000000001440000000000000F8FF000000000000F8FF000000000000F8FF0000000000001040000000000000F8FF000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (21, 0xE6100000010403000000000000000000F03F0000000000000040000000000000084000000000000014400000000000001840000000000000104001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (22, 0xE61000000114000000000000F0BF00000000000000C000000000000008C000000000000010C0);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (23, 0xE610000001040300000000000000000014400000000000000840000000000000124000000000000000400000000000000840000000000000F03F01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (24, 0xE61000000114000000000000F03F000000000000004000000000000008400000000000001C40);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (25, 0xE61000000104030000000000000000000000000000000000F03F000000000000004000000000000014400000000000001040000000000000184001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (26, 0xE610000001040300000000000000000008C00000000000000040000000000000F0BF0000000000001C4000000000000000C0000000000000084001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline (ID, bytea_line) VALUES (27, 0xE61000000104000000000000000001000000FFFFFFFFFFFFFFFF02);

# Positive Test case for extra bytes : Any byte(s) after the required bytes doesn't affect the result 
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (28, 0xE61000000114000000000000F03F000000000000004000000000000008400000000000001C401143ec21);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (29, 0xE61000000104030000000000000000000000000000000000F03F000000000000004000000000000014400000000000001040000000000000184001000000010000000001000000FFFFFFFF00000000021234eecc);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (30, 0xE61000000115000000000000084000000000000014400000000000000040000000000000104000000000000010400000000000001C4099ecacde);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (31, 0xE61000000104030000000000000000000000000000000000F03F000000000000004000000000000014400000000000001040000000000000184001000000010000000001000000FFFFFFFF0000000002acecdd44);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (32, 0xE61000000104000000000000000001000000FFFFFFFFFFFFFFFF02edcd990011);

# Positive Test case for invalid instances
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (33, 0xE610000001100000000000000040000000000000F03F0000000000000040000000000000F03F);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (34, 0xE610000001110000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (35, 0xE610000001120000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (36, 0xE610000001130000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000001040000000000000F8FF0000000000000840);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (37, 0xE61000000100030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (38, 0xE61000000101030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (39, 0xE61000000102030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (40, 0xE61000000103030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000001040000000000000F8FF000000000000F8FF0000000000000840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);

INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (41, 0xE610000002100000000000000040000000000000F03F0000000000000040000000000000F03F);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (42, 0xE610000002110000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (43, 0xE610000002120000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (44, 0xE610000002130000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000001040000000000000F8FF0000000000000840);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (45, 0xE61000000200030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (46, 0xE61000000201030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (47, 0xE61000000202030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeometryline ( ID, bytea_line) VALUES (48, 0xE61000000203030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000001040000000000000F8FF000000000000F8FF0000000000000840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);


CREATE TABLE geometryToBytealine (ID INT PRIMARY KEY, geo_line geometry );

INSERT INTO geometryToBytealine (ID, geo_line) VALUES (1, geometry::STGeomFromText('LINESTRING(3 5, 2 4)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (2, geometry::STGeomFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (3, geometry::STGeomFromText('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (4, geometry::STGeomFromText('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (5, geometry::STGeomFromText('LINESTRING(3 5 4, 2 4 7)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (6, geometry::STGeomFromText('LINESTRING(1 3 2, 5 7 6 , 4 5)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (7, geometry::STGeomFromText('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (8, geometry::STGeomFromText('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (9, geometry::STGeomFromText('LINESTRING(3 5  NULL 4, 2 4 )', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (10, geometry::STGeomFromText('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (11, geometry::STGeomFromText('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (12, geometry::STGeomFromText('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (13, geometry::STGeomFromText('LINESTRING(3 5 4 5, 2 4 7 2)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (14, geometry::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (15, geometry::STGeomFromText('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (16, geometry::STGeomFromText('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (17, geometry::STGeomFromText('LINESTRING(3 5 5, 2 4 NULL 2)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (18, geometry::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (19, geometry::STGeomFromText('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (20, geometry::STGeomFromText('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (21, geometry::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (22, geometry::STGeomFromText('LINESTRING(-1 -2, -3 -4)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (23, geometry::STGeomFromText('LINESTRING(5 3, 4.5 2, 3 1)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (24, geometry::STGeomFromText('LINESTRING(1 2, 3 7)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (25, geometry::STGeomFromText('LINESTRING(0 1, 2 5, 4 6)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (26, geometry::STGeomFromText('LINESTRING(-3 2, -1 7, -2 3)', 4326));
INSERT INTO geometryToBytealine (ID, geo_line) VALUES (27, geometry::STGeomFromText('LINESTRING EMPTY', 4326));

# geography Test Cases

CREATE TABLE GEOSPATIALLINEGEOG_dt (location geography)
ALTER TABLE GEOSPATIALLINEGEOG_dt ADD id INT IDENTITY(1,1);

# Positive Test for STGeomFromText with SRID 4326
INSERT INTO GEOSPATIALLINEGEOG_dt (location)  VALUES (geography::STGeomFromText('LINESTRING(3 5, 2 4)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)', 4326));

INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(3 5 4, 2 4 7)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(1 3 2, 5 7 6 , 4 5)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)', 4326));


INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(3 5  NULL 4, 2 4 )', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)', 4326));


INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(3 5 4 5, 2 4 7 2)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)', 4326));


INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(3 5 5, 2 4 NULL 2)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)', 4326));

INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(-1 -2, -3 -4)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(5 3, 4.5 2, 3 1)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(1 2, 3 7)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(0 1, 2 5, 4 6)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING(-3 2, -1 7, -2 3)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES (geography::STGeomFromText('LINESTRING EMPTY', 4326));

# Negative Test when SRID is not valid
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES ( geography::STGeomFromText('LINESTRING(1 2, 3 5, 6 4, 4 5 6)') );
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES ( geography::STGeomFromText('LINESTRING(1 2, 3 5, 6 4, 4 2)', 0) );
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES ( geography::STGeomFromText('LINESTRING(1 2, 3 5, 6 4 1 3)', 3452) );
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES ( geography::STGeomFromText('LINESTRING(1 2, 3 5, 6 4 3 4)', 1000) );

# Negative Test for STGeomFromText for Geography when Lat > 90 or < -90
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES ( geography::STGeomFromText('LINESTRING(1 2, 3 5, 6 400 23)', 4326) );
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES ( geography::STGeomFromText('LINESTRING(1 2, 3 -550)', 4326) );

# Negative Test for STGeomFromText when cast is not provided
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES ( STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326) );

# Negative Test for STGeomFromText when incorrect cast is provided
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES ( geometry::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326) );

# Negative Test for STGeomFromText when a coordinate is missing
INSERT INTO GEOSPATIALLINEGEOG_dt (location) VALUES ( geography::STGeomFromText('LINESTRING(1 2, 3 5, 6 )', 4326) );

CREATE TABLE GEOSPATIALPOINTGEOG_linesr (location geography)
ALTER TABLE GEOSPATIALPOINTGEOG_linesr ADD id INT IDENTITY(1,1);

INSERT INTO GEOSPATIALPOINTGEOG_linesr (location) VALUES (geography::STGeomFromText('LINESTRING EMPTY', 4326));
INSERT INTO GEOSPATIALPOINTGEOG_linesr (location) VALUES ( geography::STGeomFromText('Point(47.65100 -22.34900 )', 4326) );
INSERT INTO GEOSPATIALPOINTGEOG_linesr (location) VALUES ( geography::STGeomFromText('Point(47.65100 -22.34900 32.546000)', 4326) );
INSERT INTO GEOSPATIALPOINTGEOG_linesr (location) VALUES ( geography::STGeomFromText('Point(47.65100 -22.34900  NULL 32.546000)', 4326) );
INSERT INTO GEOSPATIALPOINTGEOG_linesr (location) VALUES ( geography::STGeomFromText('Point(47.65100 -22.34900 32.546000  54.56300)', 4326) );
INSERT INTO GEOSPATIALPOINTGEOG_linesr (location) VALUES ( geography::STGeomFromText('POINT EMPTY', 4326) );

#Test with invalid instances
CREATE TABLE GEOSPATIALLINEGEOG_INVALID_dt (location geography)
ALTER TABLE GEOSPATIALLINEGEOG_INVALID_dt ADD id INT IDENTITY(1,1);

INSERT INTO GEOSPATIALLINEGEOG_INVALID_dt (location) VALUES (geography::STGeomFromText('LINESTRING(1 2, 1 2)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_INVALID_dt (location) VALUES (geography::STGeomFromText('LINESTRING(1 2, 1 2 3)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_INVALID_dt (location) VALUES (geography::STGeomFromText('LINESTRING(1 2, 1 2 NULL 4)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_INVALID_dt (location) VALUES (geography::STGeomFromText('LINESTRING(1 2, 1 2 5 6)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_INVALID_dt (location) VALUES (geography::STGeomFromText('LINESTRING(7 3, 7 3,  7 3)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_INVALID_dt (location) VALUES (geography::STGeomFromText('LINESTRING(7 3, 7 3 4,  7 3 4)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_INVALID_dt (location) VALUES (geography::STGeomFromText('LINESTRING(7 3, 7 3 NULL 4,  7 3)', 4326));
INSERT INTO GEOSPATIALLINEGEOG_INVALID_dt (location) VALUES (geography::STGeomFromText('LINESTRING(7 3, 7 3 5 4,  7 3)', 4326));


CREATE VIEW DimOfgeographyline AS SELECT location.STAsText() AS geometry, location.STDimension() AS dimension FROM GEOSPATIALLINEGEOG_dt ORDER BY id;

CREATE VIEW AreaOfgeographyline AS SELECT location.STAsText() AS geometry, location.STArea() AS area FROM GEOSPATIALLINEGEOG_dt ORDER BY id;

CREATE VIEW TextFromgeographyline AS SELECT location.STAsText() AS text FROM GEOSPATIALLINEGEOG_dt ORDER BY id;

CREATE VIEW BinaryFromgeographyline AS SELECT location.STAsText() AS geometry, location.STAsBinary() AS binary FROM GEOSPATIALLINEGEOG_dt ORDER BY id;

CREATE VIEW SridFromgeographyline AS SELECT location.STAsText() AS geometry, location.STSrid AS srid FROM GEOSPATIALLINEGEOG_dt ORDER BY id;

CREATE VIEW Emptygeographyline AS SELECT location.STAsText() AS geometry, location.STIsEmpty() AS isempty FROM GEOSPATIALLINEGEOG_dt ORDER BY id;

CREATE VIEW Validgeographyline AS SELECT location.STAsText() AS geometry, location.STIsValid()  AS isvalid FROM GEOSPATIALLINEGEOG_dt ORDER BY id;

CREATE VIEW Closedgeographyline AS SELECT location.STAsText() AS geometry, location.STIsClosed() AS isclosed FROM GEOSPATIALLINEGEOG_dt ORDER BY id;

CREATE VIEW DisjointTempGeogline AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STDisjoint(p2.location) AS disjoints FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALLINEGEOG_dt p2 ORDER BY p1.id;

CREATE VIEW DistanceTempGeogline AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, CAST(STDistance( p1.location, p2.location ) AS numeric(20, 6)) AS distance FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALLINEGEOG_dt p2 ORDER BY p1.id;

CREATE VIEW IntersectsTempGeogline AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STIntersects(p2.location) AS interesecting FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALLINEGEOG_dt p2 ORDER BY p1.id;

CREATE VIEW EqualsTempGeogline AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STEquals(p2.location) AS equals FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALLINEGEOG_dt p2 ORDER BY p1.id;

CREATE VIEW ContainTempGeogline AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STContains(p2.location) AS contain FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALLINEGEOG_dt p2 ORDER BY p1.id;

CREATE VIEW equals_opgeogline AS SELECT p1.location AS point FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALLINEGEOG_dt p2 WHERE p1.location = p2.location ORDER BY p1.id;

CREATE VIEW notequal_opgeogline AS SELECT p1.location AS point FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALLINEGEOG_dt p2 WHERE p1.location <> p2.location ORDER BY p1.id;


CREATE VIEW DisjointTempGeoglinesr AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STDisjoint(p2.location) AS disjoints FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALPOINTGEOG_linesr p2 ORDER BY p1.id;

CREATE VIEW DistanceTempGeoglinesr AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2,  CAST(STDistance( p1.location, p2.location ) AS numeric(20, 6)) AS distance FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALPOINTGEOG_linesr p2 ORDER BY p1.id;

CREATE VIEW IntersectsTempGeoglinesr AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STIntersects(p2.location) AS interesecting FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALPOINTGEOG_linesr p2 ORDER BY p1.id;

CREATE VIEW EqualsTempGeoglinesr AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STEquals(p2.location) AS equals FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALPOINTGEOG_linesr p2 ORDER BY p1.id;

CREATE VIEW ContainTempGeoglinesr AS SELECT p1.location.STAsText() AS geometry1, p2.location.STAsText() AS geometry2, p1.location.STContains(p2.location) AS contain FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALPOINTGEOG_linesr p2 ORDER BY p1.id;

CREATE VIEW equals_opgeoglinesr AS SELECT p1.location AS point FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALPOINTGEOG_linesr p2 WHERE p1.location = p2.location ORDER BY p1.id;

CREATE VIEW notequal_opgeoglinesr AS SELECT p1.location AS point FROM GEOSPATIALLINEGEOG_dt p1 CROSS JOIN GEOSPATIALPOINTGEOG_linesr p2 WHERE p1.location <> p2.location ORDER BY p1.id;

CREATE VIEW LineGeogFromText AS SELECT geography::STLineFromText('LINESTRING(3 5, 2 4)', 4326) AS geog1, geography::STLineFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326) AS geog2;


CREATE TABLE geographyAsVarbinaryline ( ID INT IDENTITY(1,1) PRIMARY KEY, geographyData VARBINARY(500) );

INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(3 5, 2 4)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(3 5 4, 2 4 7)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 3 2, 5 7 6 , 4 5)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(3 5  NULL 4, 2 4 )', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(3 5 4 5, 2 4 7 2)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(3 5 5, 2 4 NULL 2)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(-1 -2, -3 -4)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(5 3, 4.5 2, 3 1)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 2, 3 7)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(0 1, 2 5, 4 6)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(-3 2, -1 7, -2 3)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING EMPTY', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 2,1 2)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 2,1 2 3)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 2,1 2 NULL 4)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 2,1 2 5 6)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(7 3,7 3,7 3)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(7 3,7 3 4,7 3 4)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(7 3,7 3 NULL 4,7 3)', 4326) AS VARBINARY(500)));
INSERT INTO geographyAsVarbinaryline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(7 3,7 3 5 4,7 3)', 4326) AS VARBINARY(500)));

CREATE TABLE geographyAsVarcharline ( ID INT IDENTITY(1,1) PRIMARY KEY, geographyData VARCHAR(500) );

INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(3 5, 2 4)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(3 5 4, 2 4 7)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 3 2, 5 7 6 , 4 5)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(3 5  NULL 4, 2 4 )', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(3 5 4 5, 2 4 7 2)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(3 5 5, 2 4 NULL 2)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(-1 -2, -3 -4)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(5 3, 4.5 2, 3 1)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 2, 3 7)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(0 1, 2 5, 4 6)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(-3 2, -1 7, -2 3)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING EMPTY', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 2,1 2)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 2,1 2 3)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 2,1 2 NULL 4)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(1 2,1 2 5 6)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(7 3,7 3,7 3)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(7 3,7 3 4,7 3 4)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(7 3,7 3 NULL 4,7 3)', 4326) AS VARCHAR(500)));
INSERT INTO geographyAsVarcharline (geographyData) VALUES (CAST(geography::STGeomFromText('LINESTRING(7 3,7 3 5 4,7 3)', 4326) AS VARCHAR(500)));

CREATE TABLE CharAsVarbinaryGeogline ( ID INT IDENTITY(1,1) PRIMARY KEY, geographyData VARBINARY(500) );

INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(3 5, 2 4)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(1 3, 5 7, 4 5 NULL NULL)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)' AS CHAR(400)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(3 5 4, 2 4 7)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(1 3 2, 5 7 6 , 4 5)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)' AS CHAR(400)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(3 5  NULL 4, 2 4 )' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)' AS CHAR(400)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)' AS CHAR(500)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(3 5 4 5, 2 4 7 2)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)' AS CHAR(400)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)' AS CHAR(500)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(3 5 5, 2 4 NULL 2)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)' AS CHAR(400)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)' AS CHAR(500)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(1 2, 3 5, 6 4)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(-1 -2, -3 -4)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(5 3, 4.5 2, 3 1)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(1 2, 3 7)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(0 1, 2 5, 4 6)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(-3 2, -1 7, -2 3)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING EMPTY' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(1 2,1 2)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(1 2,1 2 3)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(1 2,1 2 NULL 4)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(1 2,1 2 5 6)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(7 3,7 3,7 3)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(7 3,7 3 4,7 3 4)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(7 3,7 3 NULL 4,7 3)' AS CHAR(50)), 4326) AS VARBINARY(500)));
INSERT INTO CharAsVarbinaryGeogline (geographyData) VALUES (CAST(geography::STGeomFromText(CAST('LINESTRING(7 3,7 3 5 4,7 3)' AS CHAR(50)), 4326) AS VARBINARY(500)));

CREATE TABLE VarbinaryAsgeographyline ( ID INT IDENTITY(1,1) PRIMARY KEY, geographyData geography );

INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(3 5, 2 4)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)', 4326) AS VARBINARY(300)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(3 5 4, 2 4 7)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 3 2, 5 7 6 , 4 5)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)', 4326) AS VARBINARY(500)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(3 5  NULL 4, 2 4 )', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)', 4326) AS VARBINARY(500)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(3 5 4 5, 2 4 7 2)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)', 4326) AS VARBINARY(500)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(3 5 5, 2 4 NULL 2)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)', 4326) AS VARBINARY(500)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(-1 -2, -3 -4)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(5 3, 4.5 2, 3 1)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 2, 3 7)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(0 1, 2 5, 4 6)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(-3 2, -1 7, -2 3)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING EMPTY', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 2,1 2)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 2,1 2 3)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 2,1 2 NULL 4)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 2,1 2 5 6)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(7 3,7 3,7 3)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(7 3,7 3 4,7 3 4)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(7 3,7 3 NULL 4,7 3)', 4326) AS VARBINARY(200)) AS geography));
INSERT INTO VarbinaryAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(7 3,7 3 5 4,7 3)', 4326) AS VARBINARY(200)) AS geography));

CREATE TABLE CharAsgeographyline ( ID INT IDENTITY(1,1) PRIMARY KEY, geographyData geography );

INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(3 5, 2 4)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(1 3, 5 7, 4 5 NULL NULL)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(3 5 4, 2 4 7)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(1 3 2, 5 7 6 , 4 5)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(3 5  NULL 4, 2 4 )' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(3 5 4 5, 2 4 7 2)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(3 5 5, 2 4 NULL 2)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(1 2, 3 5, 6 4)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(-1 -2, -3 -4)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(5 3, 4.5 2, 3 1)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(1 2, 3 7)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(0 1, 2 5, 4 6)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING(-3 2, -1 7, -2 3)' AS geography));
INSERT INTO CharAsgeographyline (geographyData) VALUES (CAST('LINESTRING EMPTY' AS geography));

CREATE TABLE VarcharAsgeographyline ( ID INT IDENTITY(1,1) PRIMARY KEY, geographyData geography );

INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(3 5, 2 4)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(1 3, 5 7, 4 5 NULL NULL)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(3 5 4, 2 4 7)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(1 3 2, 5 7 6 , 4 5)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)' AS VARCHAR(300)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(3 5  NULL 4, 2 4 )' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)' AS VARCHAR(300)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(3 5 4 5, 2 4 7 2)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)' AS VARCHAR(300)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(3 5 5, 2 4 NULL 2)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)' AS VARCHAR(300)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(1 2, 3 5, 6 4)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(-1 -2, -3 -4)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(5 3, 4.5 2, 3 1)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(1 2, 3 7)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(0 1, 2 5, 4 6)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING(-3 2, -1 7, -2 3)' AS VARCHAR(500)) AS geography));
INSERT INTO VarcharAsgeographyline (geographyData) VALUES (CAST(CAST('LINESTRING EMPTY' AS VARCHAR(500)) AS geography));

CREATE TABLE GeoVarcharAsgeographyline ( ID INT IDENTITY(1,1) PRIMARY KEY, geographyData geography );

INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(3 5, 2 4)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(3 5 4, 2 4 7)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 3 2, 5 7 6 , 4 5)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(3 5  NULL 4, 2 4 )', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(3 5 4 5, 2 4 7 2)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(3 5 5, 2 4 NULL 2)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(-1 -2, -3 -4)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(5 3, 4.5 2, 3 1)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(1 2, 3 7)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(0 1, 2 5, 4 6)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING(-3 2, -1 7, -2 3)', 4326) AS VARCHAR(500)) AS geography));
INSERT INTO GeoVarcharAsgeographyline (geographyData) VALUES (CAST(CAST(geography::STGeomFromText('LINESTRING EMPTY', 4326) AS VARCHAR(500)) AS geography));

CREATE TABLE ByteaTogeographyline (ID INT PRIMARY KEY, bytea_line VARBINARY(500) );

INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (1, 0xE610000001140000000000000840000000000000144000000000000000400000000000001040);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (2, 0xE6100000010403000000000000000000F03F000000000000084000000000000014400000000000001C400000000000001040000000000000144001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (3, 0xE610000001040B00000000000000000010400000000000001440000000000000F03F000000000000F03F00000000000000400000000000000040000000000000084000000000000008400000000000001040000000000000104000000000000014400000000000001440000000000000184000000000000018400000000000001C400000000000001C4000000000000020400000000000002040000000000000224000000000000022400000000000002440000000000000244001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (4, 0xE6100000010405000000000000000000004000000000000008C00000000000001040000000000000F0BF000000000000084000000000000000C0000000000000104000000000000018400000000000000840000000000000184001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (5, 0xE61000000115000000000000084000000000000014400000000000000040000000000000104000000000000010400000000000001C40);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (6, 0xE6100000010503000000000000000000F03F000000000000084000000000000014400000000000001C400000000000001040000000000000144000000000000000400000000000001840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (7, 0xE610000001050B00000000000000000010400000000000001440000000000000F03F000000000000F03F00000000000000400000000000000040000000000000084000000000000008400000000000001040000000000000104000000000000014400000000000001440000000000000184000000000000018400000000000001C400000000000001C40000000000000204000000000000020400000000000002240000000000000224000000000000024400000000000002440000000000000F8FF0000000000000840000000000000144000000000000000400000000000001040000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF0000000000001040000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (8, 0xE6100000010505000000000000000000004000000000000008C00000000000001040000000000000F0BF000000000000084000000000000000C0000000000000104000000000000018400000000000000840000000000000184000000000000014C0000000000000F8FF0000000000001440000000000000F8FF000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (9, 0xE6100000011600000000000008400000000000001440000000000000004000000000000010400000000000001040000000000000F8FF);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (10, 0xE6100000010603000000000000000000F03F000000000000084000000000000014400000000000001C400000000000001040000000000000144000000000000008400000000000001440000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (11, 0xE610000001060B00000000000000000010400000000000001440000000000000F03F000000000000F03F00000000000000400000000000000040000000000000084000000000000008400000000000001040000000000000104000000000000014400000000000001440000000000000184000000000000018400000000000001C400000000000001C40000000000000204000000000000020400000000000002240000000000000224000000000000024400000000000002440000000000000F8FF000000000000104000000000000014400000000000000040000000000000F8FF000000000000F8FF00000000000020400000000000002240000000000000F8FF000000000000F8FF000000000000104001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (12, 0xE6100000010605000000000000000000004000000000000008C00000000000001040000000000000F0BF000000000000084000000000000000C0000000000000104000000000000018400000000000000840000000000000184000000000000014C0000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (13, 0xE61000000117000000000000084000000000000014400000000000000040000000000000104000000000000010400000000000001C4000000000000014400000000000000040);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (14, 0xE6100000010703000000000000000000F03F000000000000084000000000000014400000000000001C4000000000000010400000000000001440000000000000F8FF000000000000184000000000000000400000000000001C40000000000000F8FF000000000000184001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (15, 0xE610000001070B00000000000000000010400000000000001440000000000000F03F000000000000F03F00000000000000400000000000000040000000000000084000000000000008400000000000001040000000000000104000000000000014400000000000001440000000000000184000000000000018400000000000001C400000000000001C400000000000002040000000000000204000000000000022400000000000002240000000000000244000000000000024400000000000000040000000000000084000000000000014400000000000000040000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF000000000000104000000000000010400000000000001440000000000000F8FF000000000000F8FF000000000000F8FF0000000000001040000000000000F8FF0000000000001440000000000000F8FF000000000000F8FF000000000000F8FF000000000000184001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (16, 0xE6100000010705000000000000000000004000000000000008C00000000000001040000000000000F0BF000000000000084000000000000000C0000000000000104000000000000018400000000000000840000000000000184000000000000014C0000000000000F8FF00000000000014400000000000000840000000000000F8FF00000000000024C0000000000000F8FF000000000000F8FF0000000000001440000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (17, 0xE6100000011700000000000008400000000000001440000000000000004000000000000010400000000000001440000000000000F8FF000000000000F8FF0000000000000040);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (18, 0xE6100000010703000000000000000000F03F000000000000084000000000000014400000000000001C4000000000000010400000000000001440000000000000F8FF000000000000184000000000000000400000000000001C40000000000000F8FF000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (19, 0xE610000001070B00000000000000000010400000000000001440000000000000F03F000000000000F03F00000000000000400000000000000040000000000000084000000000000008400000000000001040000000000000104000000000000014400000000000001440000000000000184000000000000018400000000000001C400000000000001C400000000000002040000000000000204000000000000022400000000000002240000000000000244000000000000024400000000000000040000000000000084000000000000014400000000000000040000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF00000000000010400000000000001040000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF0000000000001040000000000000F8FF0000000000001440000000000000F8FF000000000000F8FF000000000000F8FF000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (20, 0xE6100000010705000000000000000000004000000000000008C00000000000001040000000000000F0BF000000000000084000000000000000C0000000000000104000000000000018400000000000000840000000000000184000000000000024C0000000000000F8FF000000000000F8FF0000000000001440000000000000F8FF000000000000F8FF000000000000F8FF0000000000001040000000000000F8FF000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (21, 0xE6100000010403000000000000000000F03F0000000000000040000000000000084000000000000014400000000000001840000000000000104001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (22, 0xE61000000114000000000000F0BF00000000000000C000000000000008C000000000000010C0);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (23, 0xE610000001040300000000000000000014400000000000000840000000000000124000000000000000400000000000000840000000000000F03F01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (24, 0xE61000000114000000000000F03F000000000000004000000000000008400000000000001C40);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (25, 0xE61000000104030000000000000000000000000000000000F03F000000000000004000000000000014400000000000001040000000000000184001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (26, 0xE610000001040300000000000000000008C00000000000000040000000000000F0BF0000000000001C4000000000000000C0000000000000084001000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline (ID, bytea_line) VALUES (27, 0xE61000000104000000000000000001000000FFFFFFFFFFFFFFFF02);

# Positive Test case for extra bytes : Any byte(s) after the required bytes doesn't affect the result 
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (28, 0xE61000000114000000000000F03F000000000000004000000000000008400000000000001C401143ec21);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (29, 0xE61000000104030000000000000000000000000000000000F03F000000000000004000000000000014400000000000001040000000000000184001000000010000000001000000FFFFFFFF00000000021234eecc);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (30, 0xE61000000115000000000000084000000000000014400000000000000040000000000000104000000000000010400000000000001C4099ecacde);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (31, 0xE61000000104030000000000000000000000000000000000F03F000000000000004000000000000014400000000000001040000000000000184001000000010000000001000000FFFFFFFF0000000002acecdd44);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (32, 0xE61000000104000000000000000001000000FFFFFFFFFFFFFFFF02edcd990011);

# Positive Test case for invalid instances
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (33, 0xE610000002100000000000000040000000000000F03F0000000000000040000000000000F03F);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (34, 0xE610000002110000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (35, 0xE610000002120000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (36, 0xE610000002130000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000001040000000000000F8FF0000000000000840);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (37, 0xE61000000200030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (38, 0xE61000000201030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (39, 0xE61000000202030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (40, 0xE61000000203030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000001040000000000000F8FF000000000000F8FF0000000000000840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);

INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (41, 0xE610000001100000000000000040000000000000F03F0000000000000040000000000000F03F);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (42, 0xE610000001110000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (43, 0xE610000001120000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (44, 0xE610000001130000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000001040000000000000F8FF0000000000000840);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (45, 0xE61000000100030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (46, 0xE61000000101030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (47, 0xE61000000102030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000000840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);
INSERT INTO ByteaTogeographyline ( ID, bytea_line) VALUES (48, 0xE61000000103030000000000000000000040000000000000F03F0000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F8FF0000000000001040000000000000F8FF000000000000F8FF0000000000000840000000000000F8FF01000000010000000001000000FFFFFFFF0000000002);

CREATE TABLE geographyToBytealine (ID INT PRIMARY KEY, geo_line geography );

INSERT INTO geographyToBytealine (ID, geo_line) VALUES (1, geography::STGeomFromText('LINESTRING(3 5, 2 4)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (2, geography::STGeomFromText('LINESTRING(1 3, 5 7, 4 5 NULL NULL)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (3, geography::STGeomFromText('LINESTRING(4 5, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (4, geography::STGeomFromText('LINESTRING(2 -3, 4 -1, 3 -2 NULL, 4 6 , 3 6)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (5, geography::STGeomFromText('LINESTRING(3 5 4, 2 4 7)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (6, geography::STGeomFromText('LINESTRING(1 3 2, 5 7 6 , 4 5)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (7, geography::STGeomFromText('LINESTRING(4 5, 1 1 3, 2 2 5, 3 3 2, 4 4 4, 5 5, 6 6 NULL , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (8, geography::STGeomFromText('LINESTRING(2 -3 -5, 4 -1, 3 -2  5 NULL, 4 6 , 3 6)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (9, geography::STGeomFromText('LINESTRING(3 5  NULL 4, 2 4 )', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (10, geography::STGeomFromText('LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (11, geography::STGeomFromText('LINESTRING(4 5, 1 1 NULL 4, 2 2  NULL 5, 3 3 NULL 2, 4 4 , 5 5, 6 6 NULL 8 , 7 7 NULL 9 , 8 8, 9 9 , 10 10 NULL 4)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (12, geography::STGeomFromText('LINESTRING(2 -3 NULL -5, 4 -1, 3 -2  NULL, 4 6 , 3 6 NULL NULL)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (13, geography::STGeomFromText('LINESTRING(3 5 4 5, 2 4 7 2)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (14, geography::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 6)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (15, geography::STGeomFromText('LINESTRING(4 5 2 5, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4 6)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (16, geography::STGeomFromText('LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (17, geography::STGeomFromText('LINESTRING(3 5 5, 2 4 NULL 2)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (18, geography::STGeomFromText('LINESTRING(1 3 NULL 7, 5 7 6 NULL , 4 5 2 NULL)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (19, geography::STGeomFromText('LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (20, geography::STGeomFromText('LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (21, geography::STGeomFromText('LINESTRING(1 2, 3 5, 6 4)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (22, geography::STGeomFromText('LINESTRING(-1 -2, -3 -4)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (23, geography::STGeomFromText('LINESTRING(5 3, 4.5 2, 3 1)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (24, geography::STGeomFromText('LINESTRING(1 2, 3 7)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (25, geography::STGeomFromText('LINESTRING(0 1, 2 5, 4 6)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (26, geography::STGeomFromText('LINESTRING(-3 2, -1 7, -2 3)', 4326));
INSERT INTO geographyToBytealine (ID, geo_line) VALUES (27, geography::STGeomFromText('LINESTRING EMPTY', 4326));


#Tests for Geometry type Prepared Statements

CREATE TABLE GEOSPATIAL_LINEGEOMRCV_dt (location geometry)

prepst#!#INSERT INTO GEOSPATIAL_LINEGEOMRCV_dt(location) values(@location) #!#GEOMETRY|-|location|-|LINESTRING(1 2, 1 2):4326
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING EMPTY:4326
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2, 3 4):4326
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2, 3 4, 2 5, 4 6):4326
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2, 3 4 NULL):4326
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2, 3 4, 2 5, 4 6 NULL NULL):4326
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 3 3, 5 7 4):4332
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 3 3, 5 7 4, 4 5 7):0
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2 NULL 4, 3 4 NULL 4):4326
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2 NULL 4, 3 4 NULL 4, 2 4 NULL 5, 6 8 NULL 9):4335
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2 3 4, 3 4 4 5):4326
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2 3 4, 3 4 4 5, 2 4 3 4, 4 5 6 7):4355

prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6):4332
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6):0
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4):4326
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5):4335

#Negative Test for STGeomFromText when SRID >= 10^6
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2, 3 4, 2 5, 4 6):1000000
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2, 3 4):1000043
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2, 3 4, 2 5):1000004
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2, 3 4, 2 5, 4 6):1000000

#Negative Test for STGeomFromText with SRID < 0 and SRID is NULL
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2, 3 4, 2 5, 4 6):-5
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2, 3 4):-1
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2, 3 4, 2 5):<NULL>
prepst#!#exec#!#GEOMETRY|-|location|-|LINESTRING (1 2, 3 4, 2 5, 4 6):<NULL>


#Tests for geography type Prepared Statements

CREATE TABLE GEOSPATIAL_LINEGEOGRCV_dt (location geography)
prepst#!#INSERT INTO GEOSPATIAL_LINEGEOGRCV_dt(location) values(@location) #!#GEOGRAPHY|-|location|-|LINESTRING(1 2, 1 2):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING EMPTY:4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2, 3 4):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2, 3 4, 2 5, 4 6):4274
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2, 3 4 NULL):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2, 3 4, 2 5, 4 6 NULL NULL):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 3 3, 5 7 4):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 3 3, 5 7 4, 4 5 7):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2 NULL 4, 3 4 NULL 4):4275
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2 NULL 4, 3 4 NULL 4, 2 4 NULL 5, 6 8 NULL 9):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2 3 4, 3 4 4 5):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2 3 4, 3 4 4 5, 2 4 3 4, 4 5 6 7):4666

prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING(2 -3 -10, 4 -1, 3 -2  NULL 4, 4 6 5, 3 6):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING(2 -3 -5 -10, 4 -1, 3 -2  5 NULL, 4 6 3 5, 3 6):4278
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING(4 5 2, 1 1 3, 2 2 5, 3 3 2 NULL , 4 4 NULL 4, 5 5, 6 6 NULL 5 , 7 7 NULL NULL , 8 8, 9 9 4 NULL, 10 10 4):4326
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING(1 3 NULL 3, 5 7 NULL 5 , 4 5):7844

#Negative Test for STGeomFromText when SRID is invalid and when SRID is NULL
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2, 3 4, 2 5, 4 6):3452
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2, 3 4):1000043
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2, 3 4, 2 5):-200
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2, 3 4, 2 5, 4 6):5454
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2, 3 4, 2 5):<NULL>
prepst#!#exec#!#GEOGRAPHY|-|location|-|LINESTRING (1 2, 3 4, 2 5, 4 6):<NULL>