polardbxengine/mysql-test/suite/gis/t/spatial_utility_function_sw...

324 lines
14 KiB
Plaintext

###############################################################################
# #
# This test is aimed to focus on the properties and attributes of the #
# Mutator function ST_SWAPXY. #
# #
# #
# Creation Date: 2016-08-16 #
# Author : Jens Even Berg Blomsoy #
# #
###############################################################################
###############################################################################
# Creating the spatial objects #
###############################################################################
--echo # Creating the spatial objects
CREATE TABLE gis_point (fid INTEGER NOT NULL PRIMARY KEY, g POINT);
CREATE TABLE gis_linestring (fid INTEGER NOT NULL PRIMARY KEY, g LINESTRING);
CREATE TABLE gis_polygon (fid INTEGER NOT NULL PRIMARY KEY, g POLYGON);
CREATE TABLE gis_multi_point (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOINT);
CREATE TABLE gis_multi_linestring (fid INTEGER NOT NULL PRIMARY KEY,
g MULTILINESTRING);
CREATE TABLE gis_multi_polygon (fid INTEGER NOT NULL PRIMARY KEY,
g MULTIPOLYGON);
CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY,
g GEOMETRYCOLLECTION);
###############################################################################
# Inserting POINT Geometry values #
###############################################################################
--echo # Inserting POINT Geometry Values
INSERT INTO gis_point VALUES
(101, POINT(1.1111,-2.2222)),
(102, POINT(10.0000,20.0000));
INSERT INTO gis_point VALUES
(103, POINT(1e308, 1e202));
--echo # Displaying the inserted POINT Geometry Data
SELECT fid, ST_ASTEXT(g) FROM gis_point;
###############################################################################
# Inserting LINESTRING Geometry values #
###############################################################################
--echo # Inserting LINESTRING Geometry Values
INSERT INTO gis_linestring VALUES
(201, ST_LINEFROMTEXT('LINESTRING(0 2,2 4,4 8)'));
INSERT INTO gis_linestring VALUES
(202, ST_LINESTRINGFROMTEXT('LINESTRING(0 12,12 24,24 48)'));
INSERT INTO gis_linestring VALUES
(203, LINESTRING(POINT(0,0), POINT(-5,7),
POINT(-10,70)));
--echo # Displaying the inserted LINESTRING Geometry Data
SELECT fid, ST_ASTEXT(g) FROM gis_linestring;
###############################################################################
# Inserting POLYGON Geometry values #
###############################################################################
--echo # Inserting POLYGON Geometry Values
INSERT INTO gis_polygon VALUES
(301, ST_POLYFROMTEXT('POLYGON((0 0,5 0,5 5, 0 0))'));
INSERT INTO gis_polygon VALUES
(302, 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 VALUES
(303, 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))));
--echo # Displaying the inserted POLYGON Geometry Data
SELECT fid, ST_ASTEXT(g) FROM gis_polygon;
###############################################################################
# Inserting MULTIPOINT Geometry values #
###############################################################################
--echo # Inserting MULTIPOINT Geometry Values
INSERT INTO gis_multi_point VALUES
(401, ST_MPOINTFROMTEXT('MULTIPOINT(0 0,5 5,10 10)'));
INSERT INTO gis_multi_point VALUES
(402, ST_MULTIPOINTFROMTEXT('MULTIPOINT(1e308 1e308,1e308 -1e308,-1e308
1e308,-1e308 -1e308)'));
INSERT INTO gis_multi_point VALUES
(403, ST_MPOINTFROMTEXT('MULTIPOINT(1e308
1e308, 1e308 -1e308, -1e308 1e308, -1e308 -1e308, 1e308 1e308)'));
--echo # Displaying the inserted MULTIPOINT Geometry Data
SELECT fid, ST_ASTEXT(g) FROM gis_multi_point;
###############################################################################
# Inserting MULTILINESTRING Geometry values #
###############################################################################
--echo # Inserting MULTILINESTRING Geometry Values
INSERT INTO gis_multi_linestring VALUES
(501, ST_MLINEFROMTEXT('MULTILINESTRING((0 0,2 2,4 4),(6 6,8 8,10 10))'));
INSERT INTO gis_multi_linestring VALUES
(502, 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 VALUES
(503, ST_MULTILINESTRINGFROMTEXT
('MULTILINESTRING((0 0,0 100),(0 0,100 0),(0 0,0 -100),(0 0,-100 0))'));
--echo # Displaying the inserted MULTILINESTRING Geometry Data
SELECT fid, ST_ASTEXT(g) FROM gis_multi_linestring;
###############################################################################
# Inserting MULTIPOLYGON Geometry values #
###############################################################################
--echo # Inserting MULTIPOLGYON Geometry Values
INSERT INTO gis_multi_polygon VALUES
(601, MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),
POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0))))),
(602, MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),
POINT(10, 0), POINT(10,10), POINT(10, 0), POINT(0,0)),
LINESTRING(POINT(4,4),
POINT(4,6), POINT(6,6),
POINT(6,4), POINT(4,4))))),
(603, 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)))));
--echo # Displaying the inserted MULTIPOLYGON Geometry Data
SELECT fid, ST_ASTEXT(g) FROM gis_multi_polygon;
###############################################################################
# Inserting GEOMETRYCOLLECTION Geometry values #
###############################################################################
INSERT INTO gis_geometrycollection 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)))'));
--echo # Displaying the inserted GEOMETRYCOLLECTION Geometry Data
SELECT fid, ST_ASTEXT(g) FROM gis_geometrycollection;
###############################################################################
# Geometry call to ST_SWAPXY() #
###############################################################################
--echo #=======================================================================
--echo # ST_SWAPXY(point)
--echo #=======================================================================
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_point WHERE fid = 101;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_point WHERE fid = 102;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_point WHERE fid = 103;
SELECT ST_ASTEXT(ST_SWAPXY(ST_POINTFROMTEXT(
'POINT(1.1111 -2.2222)')));
SELECT ST_ASTEXT(ST_SWAPXY(ST_POINTFROMTEXT(
'POINT(10.0000 20.0000)')));
SELECT ST_ASTEXT(ST_SWAPXY(ST_POINTFROMTEXT(
'POINT(1e308 1e202)')));
--echo #=======================================================================
--echo # ST_SWAPXY(linestring)
--echo #=======================================================================
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_linestring WHERE fid = 201;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_linestring WHERE fid = 202;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_linestring WHERE fid = 203;
SELECT ST_ASTEXT(ST_SWAPXY(ST_LINEFROMTEXT('LINESTRING(0 2,2 4,4 8)')));
SELECT ST_ASTEXT(ST_SWAPXY(ST_LINESTRINGFROMTEXT('LINESTRING(0 12,12 24,24 48)')));
SELECT ST_ASTEXT(ST_SWAPXY(LINESTRING(POINT(0,2), POINT(-5,7),
POINT(-10,70))));
--echo #=======================================================================
--echo # ST_SWAPXY(polygon)
--echo #=======================================================================
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_polygon WHERE fid = 301;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_polygon WHERE fid = 302;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_polygon WHERE fid = 303;
SELECT ST_ASTEXT(ST_SWAPXY(ST_POLYFROMTEXT('POLYGON((0 0,5 0,5 5, 0 0))')));
SELECT ST_ASTEXT(ST_SWAPXY(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))')));
SELECT ST_ASTEXT(ST_SWAPXY(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)))));
--echo #=======================================================================
--echo # ST_SWAPXY(multipoint)
--echo #=======================================================================
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_point WHERE fid = 401;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_point WHERE fid = 402;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_point WHERE fid = 403;
SELECT ST_ASTEXT(ST_SWAPXY(ST_MPOINTFROMTEXT('MULTIPOINT(0 5,5 10,10 20)')));
SELECT ST_ASTEXT(ST_SWAPXY(ST_MPOINTFROMTEXT('MULTIPOINT(
1e308 1e208,1e308 -1e208,-1e308 1e208,-1e308 -1e208)')));
SELECT ST_ASTEXT(ST_SWAPXY(ST_MPOINTFROMTEXT(
'MULTIPOINT(1e308 1e308,1e308 -1e308,-1e308 1e308,
-1e308 -1e308,1e308 1e308)')));
--echo #=======================================================================
--echo # ST_SWAPXY(multilinestring)
--echo #=======================================================================
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_linestring WHERE fid = 501;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_linestring WHERE fid = 502;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_linestring WHERE fid = 503;
SELECT ST_ASTEXT(ST_SWAPXY(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,2 2,4 4),
(6 6,8 8,10 10))')));
SELECT ST_ASTEXT(ST_SWAPXY(MULTILINESTRING(
LINESTRING(POINT(0,0), POINT(12,12), POINT(24,24)), LINESTRING(POINT(36,36),
POINT(48,48), POINT(50,50)))));
SELECT ST_ASTEXT(ST_SWAPXY(
ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,0 100),(0 0,100 0),
(0 0,0 -100),(0 0,-100 0))')));
--echo #=======================================================================
--echo # ST_SWAPXY(multipolygon)
--echo #=======================================================================
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_polygon WHERE fid = 601;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_polygon WHERE fid = 602;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_multi_polygon WHERE fid = 603;
SELECT ST_ASTEXT(ST_SWAPXY(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),
POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0))))));
SELECT ST_ASTEXT(ST_SWAPXY(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))))));
SELECT ST_ASTEXT(ST_SWAPXY(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))))));
--echo #=======================================================================
--echo # ST_SWAPXY(geometrycollection)
--echo #=======================================================================
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_geometrycollection WHERE fid = 701;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_geometrycollection WHERE fid = 702;
SELECT ST_ASTEXT(ST_SWAPXY(g)) FROM gis_geometrycollection WHERE fid = 703;
SELECT ST_ASTEXT(ST_SWAPXY(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))')));
SELECT ST_ASTEXT(ST_SWAPXY(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),
LINESTRING(0 0,10 10))')));
SELECT ST_ASTEXT(ST_SWAPXY(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(5 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)))')));
########################################
# Null value testing #
########################################
SELECT ST_ASTEXT(ST_SWAPXY(NULL));
###############################################################################
# Invalid function calls #
###############################################################################
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_ASTEXT(ST_SWAPXY());
--error ER_GIS_INVALID_DATA
SELECT ST_SWAPXY('foobar');
# Point without coordinates
--error ER_GIS_INVALID_DATA
SELECT ST_SWAPXY(x'0101000000');
# Linestring with zero points
--error ER_GIS_INVALID_DATA
SELECT ST_SWAPXY(x'010200000000000000');
--echo # Final cleanup
DROP TABLE gis_point;
DROP TABLE gis_linestring;
DROP TABLE gis_polygon;
DROP TABLE gis_multi_point;
DROP TABLE gis_multi_linestring;
DROP TABLE gis_multi_polygon;
DROP TABLE gis_geometrycollection;
--echo #
--echo # WL#11096 Don't do Cartesian computations on geographic geometries
--echo #
--error ER_SRS_NOT_FOUND
DO ST_SWAPXY(x'0A000000010100000000000000000000000000000000000000');