614 lines
32 KiB
Plaintext
614 lines
32 KiB
Plaintext
###############################################################################
|
|
# #
|
|
# This test is aimed at testing the geometry mutator functionality #
|
|
# following Geometry classes. #
|
|
# #
|
|
# Creation Date: 2016-05-07 #
|
|
# Author : Hans Hellzen Melby #
|
|
# (Although much was taken from Pavan's geometry_property_functions test file #
|
|
# and thus altered to fit the use case) #
|
|
# #
|
|
###############################################################################
|
|
|
|
--echo # Creating the spatial objects
|
|
|
|
CREATE TABLE gis_point_srid (fid INTEGER NOT NULL PRIMARY KEY, g POINT);
|
|
CREATE TABLE gis_linestring_srid (fid INTEGER NOT NULL PRIMARY KEY, g LINESTRING);
|
|
CREATE TABLE gis_polygon_srid (fid INTEGER NOT NULL PRIMARY KEY, g POLYGON);
|
|
CREATE TABLE gis_multi_point_srid (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOINT);
|
|
CREATE TABLE gis_multi_linestring_srid (fid INTEGER NOT NULL PRIMARY KEY, g MULTILINESTRING);
|
|
CREATE TABLE gis_multi_polygon_srid (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOLYGON);
|
|
CREATE TABLE gis_geometrycollection_srid (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRYCOLLECTION);
|
|
|
|
#######################################
|
|
# Inserting POINT Geometry values
|
|
#######################################
|
|
|
|
--echo # Inserting POINT Geometry Values
|
|
|
|
INSERT INTO gis_point_srid VALUES
|
|
(101, ST_POINTFROMTEXT('POINT(0 0)')),
|
|
(102, ST_POINTFROMTEXT('POINT(1 0)')),
|
|
(103, ST_POINTFROMTEXT('POINT(0 1)')),
|
|
(104, ST_POINTFROMTEXT('POINT(1 1)')),
|
|
(105, ST_POINTFROMTEXT('POINT(-1 1)'));
|
|
|
|
INSERT INTO gis_point_srid VALUES
|
|
(106, ST_POINTFROMWKB(ST_ASWKB(POINT(0,0)))),
|
|
(107, ST_POINTFROMWKB(ST_ASWKB(POINT(10,0)))),
|
|
(108, ST_POINTFROMWKB(ST_ASWKB(POINT(0,10)))),
|
|
(109, ST_POINTFROMWKB(ST_ASWKB(POINT(-10,0)))),
|
|
(110, ST_POINTFROMWKB(ST_ASWKB(POINT(0,-10))));
|
|
|
|
INSERT INTO gis_point_srid VALUES
|
|
(111, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(1 1)'))));
|
|
|
|
|
|
--echo # Retrieving table of POINT geometries and SRID values
|
|
--echo # (the latter should be 0 by default)
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_point_srid;
|
|
--echo # Update all fields of the table to have the same SRID
|
|
UPDATE gis_point_srid SET g=ST_SRID(g, 4326);
|
|
--echo # Check that SRIDs are now updated, and check that ST_SRID(g)
|
|
--echo # returns a geometry in the second column
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_point_srid;
|
|
|
|
###############################################
|
|
# Inserting LINESTRING Geometry values
|
|
###############################################
|
|
|
|
--echo # Inserting LINESTRING Geometry Values
|
|
INSERT INTO gis_linestring_srid VALUES
|
|
(201, ST_LINEFROMTEXT('LINESTRING(0 0,5 5)')),
|
|
(202, ST_LINEFROMTEXT('LINESTRING(0 0,2 2,4 4)')),
|
|
(203, ST_LINEFROMTEXT('LINESTRING(0 0,5 5,10 10)'));
|
|
|
|
INSERT INTO gis_linestring_srid VALUES
|
|
(204, ST_LINESTRINGFROMTEXT('LINESTRING(10 10,5 5)')),
|
|
(205, ST_LINESTRINGFROMTEXT('LINESTRING(0 0,12 12,24 24)')),
|
|
(206, ST_LINESTRINGFROMTEXT('LINESTRING(0 0,50 50,90 90)'));
|
|
|
|
INSERT INTO gis_linestring_srid VALUES
|
|
(207, ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5))))),
|
|
(208, ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,10))))),
|
|
(209, ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)))));
|
|
|
|
INSERT INTO gis_linestring_srid VALUES
|
|
(210, ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5))))),
|
|
(211, ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(-50,-50), POINT(10,-10)))));
|
|
|
|
--echo # Retrieving table of LINESTRING geometries and SRID values (the latter should be 0 by default)
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_linestring_srid;
|
|
--echo # Update all fields of the table to have the same SRID
|
|
UPDATE gis_linestring_srid SET g=ST_SRID(g, 4326);
|
|
--echo # Check that SRIDs are now updated, and check that ST_SRID(g)
|
|
--echo # returns a geometry in the second column
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_linestring_srid;
|
|
|
|
##############################################
|
|
# Inserting POLYGON Geometry values
|
|
##############################################
|
|
|
|
--echo # Inserting POLYGON Geometry Values
|
|
|
|
INSERT INTO gis_polygon_srid VALUES
|
|
(301, ST_POLYFROMTEXT('POLYGON((0 0,5 5,0 5, 0 0))')),
|
|
(302, ST_POLYFROMTEXT('POLYGON((0 0,5 0,5 5,0 5,0 0))')),
|
|
(303, ST_POLYFROMTEXT('POLYGON((0 0,10 0,10 10,0 10,0 0))'));
|
|
|
|
INSERT INTO gis_polygon_srid VALUES
|
|
(304, ST_POLYGONFROMTEXT('POLYGON((0 0,50 0,50 50,0 50,0 0))')),
|
|
(305, ST_POLYGONFROMTEXT('POLYGON((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4,4 4))')),
|
|
(306, ST_POLYGONFROMTEXT('POLYGON((0 0,10 0,10 10,0 10,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'));
|
|
|
|
INSERT INTO gis_polygon_srid VALUES
|
|
(307, ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(5,5), POINT(0,5), POINT(0,0)))))),
|
|
(308, ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(15,0), POINT(15,15), POINT(0,15), POINT(0,0)))))),
|
|
(309, ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
|
|
LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))));
|
|
|
|
INSERT INTO gis_polygon_srid VALUES
|
|
(310, ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(5,5), POINT(0,5), POINT(0,0)))))),
|
|
(311, ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(10,10), POINT(15,10), POINT(15,15), POINT(10,15), POINT(10,10)))))),
|
|
(312, ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(10,10), POINT(20,10), POINT(20,20), POINT(10,20), POINT(10,10)),
|
|
LINESTRING(POINT(14,14), POINT(14,16), POINT(16,16), POINT(16,14), POINT(14,14))))));
|
|
|
|
INSERT INTO gis_polygon_srid VALUES
|
|
(313, ST_POLYFROMWKB(ST_ASWKB(ST_POLYFROMTEXT('POLYGON((10 0,10 10,0 10,-10 10,-10 0,-10 -10,0 9,10 -10,10 0))')))),
|
|
(314, ST_POLYFROMWKB(ST_ASWKB(ST_POLYGONFROMTEXT('POLYGON((10 0,10 10,0 10,-10 10,-10 0,-10 -10,0 10,10 -10,10 0))')))),
|
|
(315, ST_POLYGONFROMWKB(ST_ASWKB(ST_POLYGONFROMTEXT('POLYGON((0 0,10 0,10 10,0 10,0 0),(2 2,4 2,4 4,2 4,2 2),(6 6,8 6,8 8,6 8,6 6))'))));
|
|
|
|
--echo # Retrieving table of POLYGON geometries and SRID values
|
|
--echo # (the latter should be 0 by default)
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_polygon_srid;
|
|
--echo # Update all fields of the table to have the same SRID
|
|
UPDATE gis_polygon_srid SET g=ST_SRID(g, 4326);
|
|
--echo # Check that SRIDs are now updated, and check that ST_SRID(g)
|
|
--echo # returns a geometry in the second column
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_polygon_srid;
|
|
|
|
#####################################################################
|
|
# Inserting MULTIPOINT Geometry values
|
|
#####################################################################
|
|
|
|
--echo # Inserting MULTIPOINT Geometry Values
|
|
|
|
INSERT INTO gis_multi_point_srid VALUES
|
|
(401, ST_MPOINTFROMTEXT('MULTIPOINT((0 0))')),
|
|
(402, ST_MPOINTFROMTEXT('MULTIPOINT((0 0),(2 2),(4 4))')),
|
|
(403, ST_MPOINTFROMTEXT('MULTIPOINT((0 0),(5 5),(10 10))'));
|
|
|
|
INSERT INTO gis_multi_point_srid VALUES
|
|
(407, ST_MPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(0,0))))),
|
|
(408, ST_MPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(0,0), POINT(10,10))))),
|
|
(409, ST_MPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)))));
|
|
|
|
--echo # Retrieving table of MULTIPOINT geometries and SRID values
|
|
--echo # (the latter should be 0 by default)
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_multi_point_srid;
|
|
--echo # Update all fields of the table to have the same SRID
|
|
UPDATE gis_multi_point_srid SET g=ST_SRID(g, 4326);
|
|
--echo # Check that SRIDs are now updated, and check that ST_SRID(g) returns
|
|
--echo # a geometry in the second column
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_multi_point_srid;
|
|
|
|
#################################################
|
|
# Inserting MULTILINESTRING Geometry values
|
|
#################################################
|
|
|
|
--echo # Inserting MULTILINESTRING Geometry Values
|
|
INSERT INTO gis_multi_linestring_srid VALUES
|
|
(501, ST_MLINEFROMTEXT('MULTILINESTRING((0 0,2 2))')),
|
|
(502, ST_MLINEFROMTEXT('MULTILINESTRING((0 0,2 2,4 4))')),
|
|
(503, ST_MLINEFROMTEXT('MULTILINESTRING((0 0,2 2,4 4),(6 6,8 8,10 10))'));
|
|
|
|
INSERT INTO gis_multi_linestring_srid VALUES
|
|
(504, ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,90 90,-90 -90))'));
|
|
|
|
INSERT INTO gis_multi_linestring_srid VALUES
|
|
(507, ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2)))))),
|
|
(508, ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(12,12), POINT(24,24)))))),
|
|
(509, ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4)),
|
|
LINESTRING(POINT(6,6), POINT(8,8), POINT(10,10))))));
|
|
|
|
INSERT INTO gis_multi_linestring_srid VALUES
|
|
(510, ST_MULTILINESTRINGFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4)))))),
|
|
(511, ST_MULTILINESTRINGFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1,1), POINT(2,2)))))),
|
|
(512, ST_MULTILINESTRINGFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(12,12), POINT(24,24)),
|
|
LINESTRING(POINT(36,36), POINT(48,48), POINT(50,50))))));
|
|
|
|
INSERT INTO gis_multi_linestring_srid VALUES
|
|
(513, ST_MLINEFROMWKB(ST_ASWKB(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 10),(0 10,10 0))')))),
|
|
(514, ST_MLINEFROMWKB(ST_ASWKB(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,10 10,-10 10,0 0),(0 0,-10 -10,10 -10,0 0))')))),
|
|
(515, ST_MULTILINESTRINGFROMWKB(ST_ASWKB(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,0 90),(0 0,90 0),(0 0,0 -90),(0 0,-90 0))'))));
|
|
|
|
--echo # Retrieving table of MULTILINESTRING geometries and SRID values
|
|
--echo # (the latter should be 0 by default)
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_multi_linestring_srid;
|
|
--echo # Update all fields of the table to have the same SRID
|
|
UPDATE gis_multi_linestring_srid SET g=ST_SRID(g, 4326);
|
|
--echo # Check that SRIDs are now updated
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_multi_linestring_srid;
|
|
|
|
|
|
###############################################
|
|
# Inserting MULTIPOLYGON Geometry values
|
|
###############################################
|
|
|
|
--echo # Inserting MULTIPOLGYON Geometry Values
|
|
|
|
INSERT INTO gis_multi_polygon_srid VALUES
|
|
(601, ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,5 5,0 5,0 0)))')),
|
|
(602, ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)),((5 5,5 10,10 10,5 5)))')),
|
|
(603, ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,6 4,6 6,4 6,4 4)))'));
|
|
|
|
INSERT INTO gis_multi_polygon_srid VALUES
|
|
(604, ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,5 5,0 5, 0 0)))')),
|
|
(605, ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,6 4,6 6,4 6, 4 4)),((0 0,-2 -2,0 -2, 0 0)))')),
|
|
(606, ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,5 5,-5 5,0 0)),((0 0,-5 -5,5 -5,0 0)))'));
|
|
|
|
INSERT INTO gis_multi_polygon_srid VALUES
|
|
(607, ST_MPOLYFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(5,0), POINT(0,0))))))),
|
|
(608, ST_MPOLYFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
|
|
LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))),
|
|
(609, ST_MPOLYFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0))),
|
|
POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0)))))));
|
|
|
|
INSERT INTO gis_multi_polygon_srid VALUES
|
|
(610, ST_MULTIPOLYGONFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0))))))),
|
|
(611, ST_MULTIPOLYGONFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(10,10), POINT(10,20), POINT(20,20), POINT(20,10), POINT(10,10)),
|
|
LINESTRING(POINT(14,14), POINT(14,16), POINT(16,16), POINT(16,14), POINT(14,14))))))),
|
|
(612, ST_MULTIPOLYGONFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
|
|
LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))),
|
|
POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0)))))));
|
|
|
|
INSERT INTO gis_multi_polygon_srid VALUES
|
|
(613, ST_MPOLYFROMWKB(ST_ASWKB(ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,-5 5,5 5,0 0)),((0 0,-5 5,-5 -5,0 0)))')))),
|
|
(614, ST_MPOLYFROMWKB(ST_ASWKB(ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,10 10,-10 10,0 0)),((0 0,-10 -10,10 -10,0 0)))')))),
|
|
(615, ST_MULTIPOLYGONFROMWKB(ST_ASWKB(ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,5 -5,10 0,5 5,0 0)))'))));
|
|
|
|
|
|
--echo # Retrieving table of MULTIPOLYGON geometries and SRID values
|
|
--echo # (the latter should be 0 by default)
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_multi_polygon_srid;
|
|
--echo # Update all fields of the table to have the same SRID
|
|
UPDATE gis_multi_polygon_srid SET g=ST_SRID(g, 4326);
|
|
--echo # Check that SRIDs are now updated, and check that ST_SRID(g)
|
|
--echo # returns a geometry in the second column
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_multi_polygon_srid;
|
|
|
|
########################################################
|
|
# Inserting GEOMETRYCOLLECTION Geometry values
|
|
########################################################
|
|
|
|
--echo # Inserting GEOMETRYCOLLECTION Geometry Values
|
|
|
|
INSERT INTO gis_geometrycollection_srid VALUES
|
|
(701, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))')),
|
|
(702, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')),
|
|
(703, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(5 5), POLYGON((0 0,10 0,10 10,0 10,0 0)))'));
|
|
|
|
INSERT INTO gis_geometrycollection_srid VALUES
|
|
(704, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')),
|
|
(705, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),'
|
|
'LINESTRING(0 0,10 10),'
|
|
'POLYGON((0 0,10 0,10 10,0 10, 0 0)))')),
|
|
(706, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(MULTIPOINT((0 0),(5 5),(10 10)),'
|
|
'MULTILINESTRING((0 0,10 10),(0 10,10 0)),'
|
|
'MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),'
|
|
'((0 0,-10 0,-10 -10,0 -10,0 0))))'));
|
|
|
|
INSERT INTO gis_geometrycollection_srid VALUES
|
|
(707, ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0))))),
|
|
(708, ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0),
|
|
LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)),
|
|
POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
|
|
LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))),
|
|
(709, ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(MULTIPOINT(POINT(0,0), POINT(5,5), POINT(10,10)),
|
|
MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)),
|
|
LINESTRING(POINT(10,10), POINT(5,5), POINT(0,10))),
|
|
MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
|
|
LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))),
|
|
POLYGON(LINESTRING(POINT(0,0), POINT(-10,0), POINT(-10,-10), POINT(0,0))))))));
|
|
|
|
INSERT INTO gis_geometrycollection_srid VALUES
|
|
(710, ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0),
|
|
LINESTRING(POINT(0,0), POINT(90,90)))))),
|
|
(711, ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(10,10),
|
|
LINESTRING(POINT(10,10), POINT(12,12), POINT(14,14), POINT(16,16), POINT(18,18)),
|
|
POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
|
|
LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))),
|
|
(712, ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(MULTIPOINT(POINT(10,10), POINT(15,15), POINT(20,20)),
|
|
MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)),
|
|
LINESTRING(POINT(10,10), POINT(5,5), POINT(0,10))),
|
|
MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
|
|
LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))),
|
|
POLYGON(LINESTRING(POINT(0,0), POINT(-10,0), POINT(-10,-10), POINT(0,0))))))));
|
|
|
|
INSERT INTO gis_geometrycollection_srid VALUES
|
|
(713, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
|
|
'POINT(0 0),'
|
|
'LINESTRING(0 0,10 10),'
|
|
'POLYGON((0 0,10 0,10 10,0 10, 0 0)),'
|
|
'MULTIPOINT((0 0),(2 2),(4 4),(6 6),(8 8),(10 10)),'
|
|
'MULTILINESTRING((0 0,10 10),(0 10,10 0)),'
|
|
'MULTIPOLYGON(((0 0,5 0,5 5,0 5,0 0)),((5 5,10 5,10 10,5 10,5 5))))')))),
|
|
(714, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
|
|
'GEOMETRYCOLLECTION('
|
|
'POINT(0 0)),'
|
|
'GEOMETRYCOLLECTION('
|
|
'LINESTRING(0 0,10 10)),'
|
|
'GEOMETRYCOLLECTION('
|
|
'POLYGON((0 0,10 0,10 10,0 10, 0 0))),'
|
|
'GEOMETRYCOLLECTION('
|
|
'MULTIPOINT((0 0),(2 2),(4 4),(6 6),(8 8),(10 10))),'
|
|
'GEOMETRYCOLLECTION('
|
|
'MULTILINESTRING((0 0,10 10),(0 10,10 0))),'
|
|
'GEOMETRYCOLLECTION('
|
|
'MULTIPOLYGON(((0 0,5 0,5 5,0 5,0 0)),((5 5,10 5,10 10,5 10,5 5)))))')))),
|
|
(715, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
|
|
'GEOMETRYCOLLECTION(),'
|
|
'POINT(0 0),'
|
|
'GEOMETRYCOLLECTION('
|
|
'LINESTRING(0 0,10 10),'
|
|
'GEOMETRYCOLLECTION('
|
|
'GEOMETRYCOLLECTION())),'
|
|
'GEOMETRYCOLLECTION(),'
|
|
'GEOMETRYCOLLECTION('
|
|
'GEOMETRYCOLLECTION()),'
|
|
'POLYGON((0 0,10 0,10 10,0 10, 0 0)),'
|
|
'MULTIPOINT((0 0),(2 2),(4 4),(6 6),(8 8),(10 10)),'
|
|
'MULTILINESTRING((0 0,10 10),(0 10,10 0)),'
|
|
'MULTIPOLYGON(((0 0,5 0,5 5,0 5,0 0)),((5 5,10 5,10 10,5 10,5 5))))'))));
|
|
|
|
--echo # Retrieving table of MULTIPOLYGON geometries and SRID values
|
|
--echo # (the latter should be 0 by default)
|
|
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_geometrycollection_srid;
|
|
|
|
--echo # Update all fields of the table to have the same SRID
|
|
UPDATE gis_geometrycollection_srid SET g=ST_SRID(g, 4326);
|
|
|
|
--echo # Check that SRIDs are now updated, and check that ST_SRID(g) returns
|
|
--echo # a geometry in the second column
|
|
SELECT ST_ASTEXT(g), ST_SRID(g) FROM gis_geometrycollection_srid;
|
|
|
|
|
|
####################################
|
|
# Invalid SRID range testing
|
|
####################################
|
|
|
|
--echo # Try to use ST_SRID with out of range SRID values (Should give error message)
|
|
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_point_srid SET g=ST_SRID(g, -100); # Less than 0
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_point_srid SET g=ST_SRID(g, 5094967295); # More than (2^32)-1
|
|
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_linestring_srid SET g=ST_SRID(g, -100); # Less than 0
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_linestring_srid SET g=ST_SRID(g, 5094967295); # More than (2^32)-1
|
|
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_polygon_srid SET g=ST_SRID(g, -100); # Less than 0
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_polygon_srid SET g=ST_SRID(g, 5094967295); # More than (2^32)-1
|
|
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_multi_point_srid SET g=ST_SRID(g, -100); # Less than 0
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_multi_point_srid SET g=ST_SRID(g, 5094967295); # More than (2^32)-1
|
|
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_multi_linestring_srid SET g=ST_SRID(g, -100); # Less than 0
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_multi_linestring_srid SET g=ST_SRID(g, 5094967295); # More than (2^32)-1
|
|
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_multi_polygon_srid SET g=ST_SRID(g, -100); # Less than 0
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_multi_polygon_srid SET g=ST_SRID(g, 5094967295); # More than (2^32)-1
|
|
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_geometrycollection_srid SET g=ST_SRID(g, -100); # Less than 0
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_geometrycollection_srid SET g=ST_SRID(g, 5094967295); # More than (2^32)-1
|
|
|
|
|
|
########################################
|
|
# Invalid parameter count testing
|
|
########################################
|
|
|
|
--echo # Try to use ST_SRID with incorrect parameter count (>2 or <1)
|
|
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_point_srid SET g=ST_SRID();
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_point_srid SET g=ST_SRID(g, 4145, 0);
|
|
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_linestring_srid SET g=ST_SRID();
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_linestring_srid SET g=ST_SRID(g, 4145, 0);
|
|
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_polygon_srid SET g=ST_SRID();
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_polygon_srid SET g=ST_SRID(g, 4145, 0);
|
|
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_multi_point_srid SET g=ST_SRID();
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_multi_point_srid SET g=ST_SRID(g, 4145, 0);
|
|
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_multi_linestring_srid SET g=ST_SRID();
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_multi_linestring_srid SET g=ST_SRID(g, 4145, 0);
|
|
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_multi_polygon_srid SET g=ST_SRID();
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_multi_polygon_srid SET g=ST_SRID(g, 4145, 0);
|
|
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_geometrycollection_srid SET g=ST_SRID();
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
UPDATE gis_geometrycollection_srid SET g=ST_SRID(g, 4145, 0);
|
|
|
|
###############################
|
|
# Undefined SRID testing
|
|
###############################
|
|
|
|
--echo # Try to use the mutator SRID function with an undefined SRID
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_point_srid SET g=ST_SRID(g, 10101);
|
|
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_linestring_srid SET g=ST_SRID(g, 10101);
|
|
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_polygon_srid SET g=ST_SRID(g, 10101);
|
|
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_multi_point_srid SET g=ST_SRID(g, 10101);
|
|
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_multi_linestring_srid SET g=ST_SRID(g, 10101);
|
|
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_multi_polygon_srid SET g=ST_SRID(g, 10101);
|
|
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_geometrycollection_srid SET g=ST_SRID(g, 10101);
|
|
|
|
##################################
|
|
# Invalid geometry testing
|
|
##################################
|
|
|
|
--echo # Testing ST_SRID mutator function with badly formed wkb strings
|
|
--echo # Note: Here the binary representation is applied directly to the
|
|
--echo # mutator ST_SRID function because if other helper functions were
|
|
--echo # to be used, such as ST_GEOMFROMTEXT or similar, then the error
|
|
--echo # would be caught in those functions instead of in the ST_SRID function.
|
|
|
|
--echo # Testing with wkb of size less than 13 bytes
|
|
SET @geom_obj_too_short=x'311000000101';
|
|
--echo # Testing with wkb that does not correspond to a valid geometry
|
|
SET @geom_obj_badly_formed=x'311000000101FFFFFF1221111100000011';
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_SRID(@geom_obj_too_short, 4145);
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_SRID(@geom_obj_badly_formed, 4145);
|
|
|
|
|
|
#############################
|
|
# Null value testing
|
|
#############################
|
|
|
|
--echo # Test for geometry = NULL:
|
|
SELECT ST_SRID(g, NULL) FROM gis_point_srid;
|
|
SELECT ST_SRID(g, NULL) FROM gis_linestring_srid;
|
|
SELECT ST_SRID(g, NULL) FROM gis_polygon_srid;
|
|
SELECT ST_SRID(g, NULL) FROM gis_multi_point_srid;
|
|
SELECT ST_SRID(g, NULL) FROM gis_multi_linestring_srid;
|
|
SELECT ST_SRID(g, NULL) FROM gis_multi_polygon_srid;
|
|
SELECT ST_SRID(g, NULL) FROM gis_geometrycollection_srid;
|
|
|
|
--echo # Test for SRID = NULL:
|
|
SELECT ST_SRID(NULL, 4145) FROM gis_point_srid;
|
|
SELECT ST_SRID(NULL, 4145) FROM gis_linestring_srid;
|
|
SELECT ST_SRID(NULL, 4145) FROM gis_polygon_srid;
|
|
SELECT ST_SRID(NULL, 4145) FROM gis_multi_point_srid;
|
|
SELECT ST_SRID(NULL, 4145) FROM gis_multi_linestring_srid;
|
|
SELECT ST_SRID(NULL, 4145) FROM gis_multi_polygon_srid;
|
|
SELECT ST_SRID(NULL, 4145) FROM gis_geometrycollection_srid;
|
|
|
|
--echo # Test for geometry = NULL and SRID = NULL:
|
|
SELECT ST_SRID(NULL, NULL) FROM gis_point_srid;
|
|
SELECT ST_SRID(NULL, NULL) FROM gis_linestring_srid;
|
|
SELECT ST_SRID(NULL, NULL) FROM gis_polygon_srid;
|
|
SELECT ST_SRID(NULL, NULL) FROM gis_multi_point_srid;
|
|
SELECT ST_SRID(NULL, NULL) FROM gis_multi_linestring_srid;
|
|
SELECT ST_SRID(NULL, NULL) FROM gis_multi_polygon_srid;
|
|
SELECT ST_SRID(NULL, NULL) FROM gis_geometrycollection_srid;
|
|
|
|
##################################
|
|
# Boundary case testing
|
|
##################################
|
|
|
|
--echo # Setting SRID to minimum value of zero (should be allowed)
|
|
UPDATE gis_point_srid SET g=ST_SRID(g, 0);
|
|
UPDATE gis_linestring_srid SET g=ST_SRID(g, 0);
|
|
UPDATE gis_polygon_srid SET g=ST_SRID(g, 0);
|
|
UPDATE gis_multi_point_srid SET g=ST_SRID(g, 0);
|
|
UPDATE gis_multi_linestring_srid SET g=ST_SRID(g, 0);
|
|
UPDATE gis_multi_polygon_srid SET g=ST_SRID(g, 0);
|
|
UPDATE gis_geometrycollection_srid SET g=ST_SRID(g, 0);
|
|
|
|
--echo # Using non-numeric value as SRID (should set SRID as zero)
|
|
SELECT ST_SRID(ST_SRID(g, 'a')) from gis_point_srid;
|
|
SELECT ST_SRID(ST_SRID(g, 'a')) from gis_linestring_srid;
|
|
SELECT ST_SRID(ST_SRID(g, 'a')) from gis_polygon_srid;
|
|
SELECT ST_SRID(ST_SRID(g, 'a')) from gis_multi_point_srid;
|
|
SELECT ST_SRID(ST_SRID(g, 'a')) from gis_multi_linestring_srid;
|
|
SELECT ST_SRID(ST_SRID(g, 'a')) from gis_multi_polygon_srid;
|
|
SELECT ST_SRID(ST_SRID(g, 'a')) from gis_geometrycollection_srid;
|
|
|
|
--echo # Setting SRID to maximum allowed value of 2^32-1=4294967295
|
|
--echo # (Should return ER_SRS_NOT_FOUND)
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_point_srid SET g=ST_SRID(g, 4294967295);
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_linestring_srid SET g=ST_SRID(g, 4294967295);
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_polygon_srid SET g=ST_SRID(g, 4294967295);
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_multi_point_srid SET g=ST_SRID(g, 4294967295);
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_multi_linestring_srid SET g=ST_SRID(g, 4294967295);
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_multi_polygon_srid SET g=ST_SRID(g, 4294967295);
|
|
--error ER_SRS_NOT_FOUND
|
|
UPDATE gis_geometrycollection_srid SET g=ST_SRID(g, 4294967295);
|
|
|
|
--echo # Setting SRID to one less than minimum value (-1)
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_point_srid SET g=ST_SRID(g, -1);
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_linestring_srid SET g=ST_SRID(g, -1);
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_polygon_srid SET g=ST_SRID(g, -1);
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_multi_point_srid SET g=ST_SRID(g, -1);
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_multi_linestring_srid SET g=ST_SRID(g, -1);
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_multi_polygon_srid SET g=ST_SRID(g, -1);
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_geometrycollection_srid SET g=ST_SRID(g, -1);
|
|
|
|
--echo # Setting SRID to one more than maximum value (4294967296)
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_point_srid SET g=ST_SRID(g, 4294967296);
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_linestring_srid SET g=ST_SRID(g, 4294967296);
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_polygon_srid SET g=ST_SRID(g, 4294967296);
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_multi_point_srid SET g=ST_SRID(g, 4294967296);
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_multi_linestring_srid SET g=ST_SRID(g, 4294967296);
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_multi_polygon_srid SET g=ST_SRID(g, 4294967296);
|
|
--error ER_DATA_OUT_OF_RANGE
|
|
UPDATE gis_geometrycollection_srid SET g=ST_SRID(g, 4294967296);
|
|
|
|
--echo # Check that SRID values are set to 0 (and thus haven't been
|
|
--echo # altered by the other boundary case tests
|
|
SELECT ST_SRID(g) FROM gis_point_srid;
|
|
SELECT ST_SRID(g) FROM gis_linestring_srid;
|
|
SELECT ST_SRID(g) FROM gis_polygon_srid;
|
|
SELECT ST_SRID(g) FROM gis_multi_point_srid;
|
|
SELECT ST_SRID(g) FROM gis_multi_linestring_srid;
|
|
SELECT ST_SRID(g) FROM gis_multi_polygon_srid;
|
|
SELECT ST_SRID(g) FROM gis_geometrycollection_srid;
|
|
|
|
--echo # Dropping tables to leave test database in original state
|
|
DROP TABLE gis_point_srid;
|
|
DROP TABLE gis_linestring_srid;
|
|
DROP TABLE gis_polygon_srid;
|
|
DROP TABLE gis_multi_point_srid;
|
|
DROP TABLE gis_multi_linestring_srid;
|
|
DROP TABLE gis_multi_polygon_srid;
|
|
DROP TABLE gis_geometrycollection_srid;
|
|
|
|
--echo # Bug 23857035 Test case
|
|
|
|
SET @@sql_mode='';
|
|
CREATE TABLE t1 (g GEOMETRY);
|
|
INSERT INTO t1 VALUES (POINT(10, 10)), (NULL);
|
|
SELECT ST_AsText(ST_SRID(g, 4326)) FROM t1;
|
|
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Bug #27892138 ST_LONGITUD() RETURNS LATITUDE OUT OF RANGE ERROR
|
|
--echo #
|
|
|
|
# The Item::null_value for literal NULLs is hardcoded in the item. This
|
|
# test reads the values from a table.
|
|
|
|
CREATE TABLE t1 (srid INT);
|
|
INSERT INTO t1 VALUES (NULL), (4326);
|
|
SELECT srid, HEX(ST_SRID(POINT(0, 0), srid)) FROM t1;
|
|
DROP TABLE t1;
|
|
|
|
CREATE TABLE t1 (pk INT PRIMARY KEY, g GEOMETRY);
|
|
INSERT INTO t1 VALUES (0, NULL), (1, ST_GEOMFROMTEXT('POINT(0 0)'));
|
|
SELECT pk, ST_SRID(g) FROM t1;
|
|
SELECT pk, HEX(ST_SRID(g, 4326)) FROM t1;
|
|
DROP TABLE t1;
|