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

1091 lines
47 KiB
Plaintext

# This test tests the GIS functions that take as arguments a Well-Known Text (WKT)
# representation and, optionally, a spatial reference system identifier (SRID).
# They return the corresponding geometry.
#
# Creation Date : 2016-03-16
# Author : Pavan Naik
#
SET @wkt_pt = 'POINT(0 0)';
SET @wkt_ln = 'LINESTRING(0 0,2 2,4 4,6 6,8 8, 10 10)';
SET @wkt_py = 'POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))';
SET @wkt_mpt = 'MULTIPOINT(0 0,2 2,4 4,6 6)';
SET @wkt_mln = 'MULTILINESTRING((0 0,2 2,4 4),(6 6,8 8,10 10))';
SET @wkt_mpy = 'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)),'
'((10 10,10 12,12 12,12 10,10 10)))';
SET @wkt_gc = 'GEOMETRYCOLLECTION('
'POINT(0 0),'
'LINESTRING(0 0,10 10),'
'POLYGON((0 0,0 10,10 10,10 0, 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,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))';
--echo #
--echo # Functions that accept a WKT value of any geometry type.
--echo #
--echo # ST_GeomFromText()
SELECT ST_AsText(ST_GeomFromText(@wkt_pt));
SELECT ST_AsText(ST_GeomFromText(@wkt_ln));
SELECT ST_AsText(ST_GeomFromText(@wkt_py));
SELECT ST_AsText(ST_GeomFromText(@wkt_mpt));
SELECT ST_AsText(ST_GeomFromText(@wkt_mln));
SELECT ST_AsText(ST_GeomFromText(@wkt_mpy));
SELECT ST_AsText(ST_GeomFromText(@wkt_gc));
--echo # ST_GeometryFromText()
SELECT ST_AsText(ST_GeometryFromText(@wkt_pt));
SELECT ST_AsText(ST_GeometryFromText(@wkt_ln));
SELECT ST_AsText(ST_GeometryFromText(@wkt_py));
SELECT ST_AsText(ST_GeometryFromText(@wkt_mpt));
SELECT ST_AsText(ST_GeometryFromText(@wkt_mln));
SELECT ST_AsText(ST_GeometryFromText(@wkt_mpy));
SELECT ST_AsText(ST_GeometryFromText(@wkt_gc));
--echo #
--echo # Function that accepts a WKT value of Point geometry
--echo #
--echo # ST_PointFromText()
SELECT ST_AsText(ST_PointFromText(@wkt_pt));
--echo #
--echo # Functions that accept a WKT value of LineString geometry
--echo #
--echo # ST_LineFromText()
SELECT ST_AsText(ST_LineFromText(@wkt_ln));
--echo # ST_LineStringFromText()
SELECT ST_AsText(ST_LineStringFromText(@wkt_ln));
--echo #
--echo # Functions that accept a WKT value of Polygon geometry
--echo #
--echo # ST_PolyFromText()
SELECT ST_AsText(ST_PolyFromText(@wkt_py));
--echo # ST_PolygonFromText()
SELECT ST_AsText(ST_PolygonFromText(@wkt_py));
--echo #
--echo # Functions that accept a WKT value of MultiPoint geometry
--echo #
--echo # ST_MPointFromText()
SELECT ST_AsText(ST_MPointFromText(@wkt_mpt));
--echo # ST_MultiPointFromText()
SELECT ST_AsText(ST_MultiPointFromText(@wkt_mpt));
--echo #
--echo # Functions that accept a WKT value of MultiLineString geometry
--echo #
--echo # ST_MLineFromText()
SELECT ST_AsText(ST_MLineFromText(@wkt_mln));
--echo # ST_MultiLineStringFromText()
SELECT ST_AsText(ST_MultiLineStringFromText(@wkt_mln));
--echo #
--echo # Functions that accept a WKT value of MultiPolygon geometry
--echo #
--echo # ST_MPolyFromText()
SELECT ST_AsText(ST_MPolyFromText(@wkt_mpy));
--echo # ST_MultiPolygonFromText()
SELECT ST_AsText(ST_MultiPolygonFromText(@wkt_mpy));
--echo #
--echo # Functions that accept a WKT value of GeometryCollection geometry
--echo #
--echo # ST_GeomCollFromTxt()
SELECT ST_AsText(ST_GeomCollFromTxt(@wkt_gc));
--echo # ST_GeomCollFromText()
SELECT ST_AsText(ST_GeomCollFromText(@wkt_gc));
--echo # ST_GeometryCollectionFromText()
SELECT ST_AsText(ST_GeometryCollectionFromText(@wkt_gc));
--echo #
--echo # Invalid function calls
--echo #
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_GeomFromText();
SELECT ST_GeomFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_GeomFromText('POINT()');
--error ER_GIS_INVALID_DATA
SELECT ST_GeomFromText('LINESTRING(0 0,! 10)');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_GeometryFromText();
SELECT ST_GeometryFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_GeometryFromText('POINT(! 0)');
--error ER_GIS_INVALID_DATA
SELECT ST_GeometryFromText('POLYGON((0 0,0 10,10 10,10 0,0 0)');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_PointFromText();
SELECT ST_PointFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_PointFromText('POINT()');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_LineFromText();
SELECT ST_LineFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_LineFromText('LINESTRING(a a,b b)');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_LineStringFromText();
SELECT ST_LineStringFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_LineStringFromText('LINESTRING(1 1,1 b)');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_PolyFromText();
SELECT ST_PolyFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_PolyFromText('POLYGON(())');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_PolygonFromText();
SELECT ST_PolygonFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_PolygonFromText('POLYGON((0 0,0 5,5 5,5 0,0 0),())');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_MPointFromText();
SELECT ST_MPointFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_MPointFromText('MULTIPOINT(0 0,1)');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_MultiPointFromText();
SELECT ST_MultiPointFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_MultiPointFromText('MULTIPOINT(0 0,1 1 1)');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_MLineFromText();
SELECT ST_MLineFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_MLineFromText('MULTILINESTRING((0 0,1),())');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_MultiLineStringFromText();
SELECT ST_MultiLineStringFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_MultiLineStringFromText('MULTILINESTRING((0 0,1),(1 1,2 2)');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_MPolyFromText();
SELECT ST_MPolyFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_MPolyFromText('MULTIPOLYGON(((0 0,1)),(()))');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_MultiPolygonFromText();
SELECT ST_MultiPolygonFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_MultiPolygonFromText('MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0)),(2 2,2 3,3 3,3 2,2 2))');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_GeomCollFromTxt();
SELECT ST_GeomCollFromTxt(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_GeomCollFromTxt('GEOMETRYCOLLECTION(POINT())');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_GeomCollFromText();
SELECT ST_GeomCollFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(a a))');
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_GeometryCollectionFromText();
SELECT ST_GeometryCollectionFromText(NULL);
--error ER_GIS_INVALID_DATA
SELECT ST_GeometryCollectionFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,1 1)');
--echo #
--echo # WL#8579 Spatial Reference Systems
--echo #
DELIMITER |;
CREATE PROCEDURE gis_wkt_funcs(IN srid INT)
BEGIN
SET @wkt_pt = 'POINT(0 0)';
SET @wkt_ln = 'LINESTRING(0 0,2 2,4 4,6 6,8 8, 10 10)';
SET @wkt_py = 'POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))';
SET @wkt_mpt = 'MULTIPOINT(0 0,2 2,4 4,6 6)';
SET @wkt_mln = 'MULTILINESTRING((0 0,2 2,4 4),(6 6,8 8,10 10))';
SET @wkt_mpy = 'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)),'
'((10 10,10 12,12 12,12 10,10 10)))';
SET @wkt_gc = 'GEOMETRYCOLLECTION('
'POINT(0 0),'
'LINESTRING(0 0,10 10),'
'POLYGON((0 0,0 10,10 10,10 0, 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,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))';
# GIS WKT functions
DO ST_GeomFromText(@wkt_pt, srid);
DO ST_GeometryFromText(@wkt_pt, srid);
DO ST_PointFromText(@wkt_pt, srid);
DO ST_LineFromText(@wkt_ln, srid);
DO ST_LineStringFromText(@wkt_ln, srid);
DO ST_PolyFromText(@wkt_py, srid);
DO ST_PolygonFromText(@wkt_py, srid);
DO ST_MPointFromText(@wkt_mpt, srid);
DO ST_MultiPointFromText(@wkt_mpt, srid);
DO ST_MLineFromText(@wkt_mln, srid);
DO ST_MultiLineStringFromText(@wkt_mln, srid);
DO ST_MPolyFromText(@wkt_mpy, srid);
DO ST_MultiPolygonFromText(@wkt_mpy, srid);
DO ST_GeomCollFromTxt(@wkt_gc, srid);
DO ST_GeomCollFromText(@wkt_gc, srid);
DO ST_GeometryCollectionFromText(@wkt_gc, srid);
END |
DELIMITER ;|
--echo # SRID 0 (should pass)
CALL gis_wkt_funcs(0);
--echo # Projected SRS (should pass)
CALL gis_wkt_funcs(2000);
--echo # Geographic SRS (should pass)
CALL gis_wkt_funcs(4326);
--echo # Undefined SRS (should fail)
# Assume SRID 19000000 is undefined
--error ER_SRS_NOT_FOUND
CALL gis_wkt_funcs(19000000);
--echo # Clean up
DROP PROCEDURE gis_wkt_funcs;
--echo #
--echo # Bug #23632147 MYSQL USES INVALID WKT FOR EMPTY GEOMETRYCOLLECTION
--echo #
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('POINT EMPTY'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('POINT()'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT(' POINT EMPTY '));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('POINT EMPTY()'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('POINT EMPT'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('POINT EMPTYNESS'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('LINESTRING EMPTY'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('LINESTRING()'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT(' LINESTRING EMPTY '));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('LINESTRING EMPTY()'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('LINESTRING EMPT'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('LINESTRING EMPTYNESS'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('POLYGON EMPTY'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('POLYGON()'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT(' POLYGON EMPTY '));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('POLYGON EMPTY()'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('POLYGON EMPT'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('POLYGON EMPTYNESS'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTIPOINT EMPTY'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTIPOINT()'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT(' MULTIPOINT EMPTY '));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTIPOINT EMPTY()'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTIPOINT EMPT'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTIPOINT EMPTYNESS'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTILINESTRING EMPTY'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTILINESTRING()'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT(' MULTILINESTRING EMPTY '));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTILINESTRING EMPTY()'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTILINESTRING EMPT'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTILINESTRING EMPTYNESS'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTIPOLYGON EMPTY'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTIPOLYGON()'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT(' MULTIPOLYGON EMPTY '));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTIPOLYGON EMPTY()'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTIPOLYGON EMPT'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('MULTIPOLYGON EMPTYNESS'));
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION EMPTY'));
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION()'));
SELECT ST_ASTEXT(ST_GEOMFROMTEXT(' GEOMETRYCOLLECTION EMPTY '));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION EMPTY()'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION EMPT'));
--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION EMPTYNESS'));
SELECT ST_ASTEXT(ST_GEOMFROMTEXT(
'GEOMETRYCOLLECTION(
GEOMETRYCOLLECTION(
GEOMETRYCOLLECTION EMPTY,
GEOMETRYCOLLECTION ()
)
)'
));
--echo ########################################################################
--echo # Inserting testing SRS values in spatial reference table
--echo ########################################################################
--echo # Inserting geographical srs with long-lat ordering
CREATE SPATIAL REFERENCE SYSTEM 30000000 NAME 'TEST30000000' DEFINITION 'GEOGCS["SIRGAS 1995",DATUM["Sistema de Referencia Geocentrico para America del Sur 1995",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6170"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["LONG",EAST],AXIS["LAT",NORTH],AUTHORITY["EPSG","30000000"]]';
--echo # Inserting geographical srs with lat-long ordering
CREATE SPATIAL REFERENCE SYSTEM 30100000 NAME 'TEST30100000' DEFINITION 'GEOGCS["SIRGAS 1995",DATUM["Sistema de Referencia Geocentrico para America del Sur 1995",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6170"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["LAT",NORTH],AXIS["LONG",EAST],AUTHORITY["EPSG","30100000"]]';
--echo # Inserting projected srs with northing-easting ordering
CREATE SPATIAL REFERENCE SYSTEM 30200000 NAME 'TEST30200000' DEFINITION 'PROJCS["NAD83(NSRS2007) / Virginia Lambert",GEOGCS["NAD83(NSRS2007)",DATUM["NAD83 (National Spatial Reference System 2007)",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6759"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Long",EAST],AUTHORITY["EPSG","4759"]],PROJECTION["Lambert Conic Conformal (2SP)",AUTHORITY["EPSG","9802"]],PARAMETER["Latitude of false origin",36,AUTHORITY["EPSG","8821"]],PARAMETER["Longitude of false origin",-79.5,AUTHORITY["EPSG","8822"]],PARAMETER["Latitude of 1st standard parallel",37,AUTHORITY["EPSG","8823"]],PARAMETER["Latitude of 2nd standard parallel",39.5,AUTHORITY["EPSG","8824"]],PARAMETER["Easting at false origin",0,AUTHORITY["EPSG","8826"]],PARAMETER["Northing at false origin",0,AUTHORITY["EPSG","8827"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",NORTH],AXIS["Y",EAST],AUTHORITY["EPSG","30200000"]]';
--echo # Inserting projected srs with easting-northing ordering
CREATE SPATIAL REFERENCE SYSTEM 30300000 NAME 'TEST30300000' DEFINITION 'PROJCS["NAD83(NSRS2007) / Virginia Lambert",GEOGCS["NAD83(NSRS2007)",DATUM["NAD83 (National Spatial Reference System 2007)",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6759"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Long",EAST],AUTHORITY["EPSG","4759"]],PROJECTION["Lambert Conic Conformal (2SP)",AUTHORITY["EPSG","9802"]],PARAMETER["Latitude of false origin",36,AUTHORITY["EPSG","8821"]],PARAMETER["Longitude of false origin",-79.5,AUTHORITY["EPSG","8822"]],PARAMETER["Latitude of 1st standard parallel",37,AUTHORITY["EPSG","8823"]],PARAMETER["Latitude of 2nd standard parallel",39.5,AUTHORITY["EPSG","8824"]],PARAMETER["Easting at false origin",0,AUTHORITY["EPSG","8826"]],PARAMETER["Northing at false origin",0,AUTHORITY["EPSG","8827"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",EAST],AXIS["Y",NORTH],AUTHORITY["EPSG","30300000"]]';
--echo ########################################################################
--echo # Retrieving geometrycollections with the ST_GEOMCOLLFROMTEXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)),
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0))))', 30000000,'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30100000,'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30200000,'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)),
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0))))', 30300000,'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving geometrycollections with the ST_GEOMCOLLFROMTXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)),
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0))))', 30000000,'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30100000,'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30200000,'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)),
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0))))', 30300000,'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving geometrycollections with the ST_GEOMETRYCOLLECTIONFROMTEXT
--echo # function
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)),
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0))))', 30000000,'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30100000,'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30200000,'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)),
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0))))', 30300000,'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving geometrycollections with the ST_GEOMETRYFROMTEXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_GEOMETRYFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)),
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0))))', 30000000,'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_GEOMETRYFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30100000,'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_GEOMETRYFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30200000,'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_GEOMETRYFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)),
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0))))', 30300000,'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving geometrycollections with the ST_GEOMFROMTEXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)),
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0))))', 30000000,'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30100000,'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30200000,'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)),
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0))))', 30300000,'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving linestrings with the ST_LINEFROMTEXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_LINEFROMTEXT('LINESTRING(0 5,5 10,10 15)', 30100000,
'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_LINEFROMTEXT('LINESTRING(0 5,5 10,10 15)', 30100000,
'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_LINEFROMTEXT('LINESTRING(0 5,5 10,10 15)', 30100000,
'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_LINEFROMTEXT('LINESTRING(0 5,5 10,10 15)', 30000000,
'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving linestrings with the ST_LINESTRINGFROMTEXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_LINESTRINGFROMTEXT('LINESTRING(0 5,5 10,10 15)', 30100000,
'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_LINESTRINGFROMTEXT('LINESTRING(0 5,5 10,10 15)', 30100000,
'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_LINESTRINGFROMTEXT('LINESTRING(0 5,5 10,10 15)', 30100000,
'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_LINESTRINGFROMTEXT('LINESTRING(0 5,5 10,10 15)', 30000000,
'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving multistrings with the ST_MLINEFROMTEXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_MLINEFROMTEXT('MULTILINESTRING((0 2,2 4,4 6),
(8 11,11 14,14 17))', 30000000,'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_MLINEFROMTEXT('MULTILINESTRING((0 2,2 4,4 6),
(8 11,11 14,14 17))', 30100000,'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_MLINEFROMTEXT('MULTILINESTRING((0 2,2 4,4 6),
(8 11,11 14,14 17))', 30200000,'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_MLINEFROMTEXT('MULTILINESTRING((0 2,2 4,4 6),
(8 11,11 14,14 17))', 30300000,'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving multipoints with the ST_MPOINTFROMTEXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_MPOINTFROMTEXT('MULTIPOINT((0 2), (5 7), (8 2), (4 9))',
30000000,'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_MPOINTFROMTEXT('MULTIPOINT((0 2), (5 7), (8 2), (4 9))',
30100000,'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_MPOINTFROMTEXT('MULTIPOINT((0 2), (5 7), (8 2), (4 9))',
30200000,'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_MPOINTFROMTEXT('MULTIPOINT((0 2), (5 7), (8 2), (4 9))',
30300000,'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving multipolygons with the ST_MPOLYFROMTEXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),
(4 4,4 6,6 6,6 4, 4 4)),((0 0,-2 -2,0 -2, 0 0)))', 30000000,
'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),
(4 4,6 4,6 6,4 6, 4 4)),((0 0,-2 -2,-2 0, 0 0)))', 30100000,
'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),
(4 4,4 6,6 6,6 4, 4 4)),((0 0,-2 -2,0 -2, 0 0)))', 30200000,
'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),
(4 4,4 6,6 6,6 4, 4 4)),((0 0,-2 -2,0 -2, 0 0)))', 30300000,
'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving multistrings with the ST_MULTILINESTRINGFROMTEXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 2,2 4,4 6),
(8 11,11 14,14 17))', 30000000,'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 2,2 4,4 6),
(8 11,11 14,14 17))', 30100000,'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 2,2 4,4 6),
(8 11,11 14,14 17))', 30200000,'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 2,2 4,4 6),
(8 11,11 14,14 17))', 30300000,'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving multipoints with the ST_MULTIPOINTFROMTEXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_MULTIPOINTFROMTEXT('MULTIPOINT((0 2), (5 7), (8 2),
(4 9))', 30000000,'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_MULTIPOINTFROMTEXT('MULTIPOINT((0 2), (5 7), (8 2),
(4 9))', 30100000,'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_MULTIPOINTFROMTEXT('MULTIPOINT((0 2), (5 7), (8 2),
(4 9))', 30200000,'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_MULTIPOINTFROMTEXT('MULTIPOINT((0 2), (5 7), (8 2),
(4 9))', 30300000,'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving multipolygons with the ST_MULTIPOLYGONFROMTEXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_MULTIPOLYGONFROMTEXT(
'MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0), (4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0)))', 30000000, 'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_MULTIPOLYGONFROMTEXT(
'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0), (4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0)))', 30100000, 'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_MULTIPOLYGONFROMTEXT(
'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0), (4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0)))', 30200000, 'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_MULTIPOLYGONFROMTEXT(
'MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0), (4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0)))', 30300000, 'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving points with the ST_POINTFROMTEXT function
--echo #
--echo ########################################################################
--echo # When the geometry is in a projected spatial reference system,
--echo # the coordinates are interpreted as in the order they appear in the geometry.
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_POINTFROMTEXT('point(1 2)',30300000, 'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_POINTFROMTEXT('point(1 2)',30100000, 'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_POINTFROMTEXT('point(1 2)',30200000, 'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_POINTFROMTEXT('point(1 2)',30100000, 'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving polygons with the ST_POLYFROMTEXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_POLYFROMTEXT('POLYGON((0 0,5 0,5 5,0 5,0 0))', 30000000,
'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))', 30100000,
'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))', 30200000,
'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_POLYFROMTEXT('POLYGON((0 0,5 0,5 5,0 5,0 0))', 30300000,
'axis-order=srid-defined'));
--echo ########################################################################
--echo # Retrieving polygons with the ST_POLYGONFROMTEXT function
--echo #
--echo ########################################################################
--echo # Retrieve values with long lat ordering.
SELECT ST_ASTEXT(ST_POLYGONFROMTEXT('POLYGON((0 0,5 0,5 5,0 5,0 0))', 30000000,
'axis-order=long-lat'));
--echo # Retrieve values with lat-long ordering.
SELECT ST_ASTEXT(ST_POLYGONFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))', 30100000,
'axis-order=lat-long'));
--echo # Retrieve values with SRID-defined ordering.
SELECT ST_ASTEXT(ST_POLYGONFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))', 30200000,
'axis-order=srid-defined'));
SELECT ST_ASTEXT(ST_POLYGONFROMTEXT('POLYGON((0 0,5 0,5 5,0 5,0 0))', 30300000,
'axis-order=srid-defined'));
--echo # ######################################################################
--echo # Options upper and lower case testing
--echo # ######################################################################
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)),
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0))))', 30000000,'axis-order=Long-Lat'));
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30100000,'axiS-Order=Lat-lonG'));
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30200000,'AXis-orDer=srid-defined'));
--echo ########################################################################
--echo # Error testing
--echo ########################################################################
--echo # Test with too many options.
--error ER_DUPLICATE_OPTION_KEY
SELECT ST_ASTEXT(ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),
(4 4,6 4,6 6,4 6, 4 4)),((0 0,-2 -2,-2 0, 0 0)))', 30300000,
'axis-order=srid-defined, axis-order=lat-long'));
--echo # Test with invalid options key.
--error ER_INVALID_OPTION_KEY
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30300000,'axix-order=srid-defined'));
--error ER_INVALID_OPTION_KEY
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30200000,'axix-order=lat-long'));
--error ER_INVALID_OPTION_KEY
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30100000,'axix-order=lat-long'));
--echo # Test with invalid options value
--error ER_INVALID_OPTION_VALUE
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30300000,'axis-order=srid-dfined'));
--error ER_INVALID_OPTION_VALUE
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30200000,'axis-order=lat-bong'));
--error ER_INVALID_OPTION_VALUE
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30100000,'axis-order=lat-shwong'));
--echo # Test with both invalid option and invalid value
--error ER_INVALID_OPTION_KEY
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)),
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0))))', 30100000,'axis-border=lat-shwong'));
--echo # Testing for badly formed options argument.
--error ER_INVALID_OPTION_KEY_VALUE_PAIR
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30100000,'axis-order srid-defined'));
--error ER_INVALID_OPTION_START_CHARACTER
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30100000,'=axis-order srid-defined'));
--error ER_INVALID_OPTION_END_CHARACTER
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30100000,'axis-order=srid-defined='));
--error ER_INVALID_OPTION_CHARACTERS
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30100000,'axis-order== srid-defined'));
--echo # ######################################################################
--echo # Empty string and white space testing
--echo # ######################################################################
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,10 0,10 10,0 10,0 0)),
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),
((0 0,-2 -2,0 -2, 0 0))))', 30000000,''));
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30200000,' '));
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(3 5),
POLYGON((0 0,0 10,10 10,10 0,0 0)),
MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6, 4 4)),
((0 0,-2 -2,-2 0, 0 0))))', 30200000,' axis-order = srid-defined '));
--echo # ######################################################################
--echo # NULL value testing
--echo # ######################################################################
--echo # NULL value testing: Should return NULL if either or both parameters is NULL
SELECT ST_ASTEXT(ST_POINTFROMTEXT(NULL,30300000, 'axis-order=long-lat'));
SELECT ST_ASTEXT(ST_POINTFROMTEXT('point(1 2)', NULL, 'axis-order=lat-long'));
SELECT ST_ASTEXT(ST_POINTFROMTEXT('point(1 2)', 30200000, NULL));
SELECT ST_ASTEXT(ST_POINTFROMTEXT('point(1 2)', NULL, NULL));
SELECT ST_ASTEXT(ST_POINTFROMTEXT(NULL, NULL, NULL));
--echo #
--echo # Bug #25818451 ASAN HEAP-USE-AFTER-FREE WITH GEOMETRY + STRING
--echo #
SET @c:=REPEAT('a',128);
SET @f:=0x336f;
SET @s:=REPLACE("DO ST_ASTEXT(LEFT(@c,@f));","'",'"');
PREPARE s FROM @s;
--error ER_GIS_INVALID_DATA
EXECUTE s;
DROP PREPARE s;
######################################################################
# WL#9449 Restrict range of geographic coordinates in import functions
######################################################################
--echo ##########################################################
--echo # Inserting testing SRS values in spatial reference table
--echo ##########################################################
--echo # Inserting geographical srs with long-lat ordering
CREATE SPATIAL REFERENCE SYSTEM 32000000 NAME 'TEST32000000' DEFINITION 'GEOGCS["SIRGAS 1995",DATUM["Sistema de Referencia Geocentrico para America del Sur 1995",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6170"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["LONG",EAST],AXIS["LAT",NORTH],AUTHORITY["EPSG","32000000"]]';
--echo # Inserting geographical srs with lat-long ordering
CREATE SPATIAL REFERENCE SYSTEM 32100000 NAME 'TEST32100000' DEFINITION 'GEOGCS["SIRGAS 1995",DATUM["Sistema de Referencia Geocentrico para America del Sur 1995",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6170"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["LAT",NORTH],AXIS["LONG",EAST],AUTHORITY["EPSG","32100000"]]';
--echo # Inserting projected srs with northing-easting ordering
CREATE SPATIAL REFERENCE SYSTEM 32200000 NAME 'TEST32200000' DEFINITION 'PROJCS["NAD83(NSRS2007) / Virginia Lambert",GEOGCS["NAD83(NSRS2007)",DATUM["NAD83 (National Spatial Reference System 2007)",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6759"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Long",EAST],AUTHORITY["EPSG","4759"]],PROJECTION["Lambert Conic Conformal (2SP)",AUTHORITY["EPSG","9802"]],PARAMETER["Latitude of false origin",36,AUTHORITY["EPSG","8821"]],PARAMETER["Longitude of false origin",-79.5,AUTHORITY["EPSG","8822"]],PARAMETER["Latitude of 1st standard parallel",37,AUTHORITY["EPSG","8823"]],PARAMETER["Latitude of 2nd standard parallel",39.5,AUTHORITY["EPSG","8824"]],PARAMETER["Easting at false origin",0,AUTHORITY["EPSG","8826"]],PARAMETER["Northing at false origin",0,AUTHORITY["EPSG","8827"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",NORTH],AXIS["Y",EAST],AUTHORITY["EPSG","32200000"]]';
--echo #########################################################################
--echo # Test with geometries with geographic SRS with long-lat ordering outside
--echo # valid range.
--echo #########################################################################
--error ER_LONGITUDE_OUT_OF_RANGE
SELECT ST_POINTFROMTEXT('POINT(-200 10)',32000000);
--error ER_LONGITUDE_OUT_OF_RANGE
SELECT ST_LINEFROMTEXT('LINESTRING(0 5,194 10,10 15)',32000000);
--error ER_LONGITUDE_OUT_OF_RANGE
SELECT ST_POLYFROMTEXT('POLYGON((0 0,5 0,5 5,-300 5,0 0))',32000000);
--error ER_LONGITUDE_OUT_OF_RANGE
SELECT ST_MPOINTFROMTEXT('MULTIPOINT((0 2), (5 7), (798 2), (-344 9))',32000000);
--error ER_LONGITUDE_OUT_OF_RANGE
SELECT ST_MLINEFROMTEXT('MULTILINESTRING((0 2,2 4,4 6),(744 11,11 14,14 17))',32000000);
--error ER_LONGITUDE_OUT_OF_RANGE
SELECT ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,350 0,350 350,0 350,0 0),(4 4,4 6,6 6,6 4, 4 4)),((0 0,-2 -2,0 -2, 0 0)))',32000000);
--error ER_LONGITUDE_OUT_OF_RANGE
SELECT ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(-199 5), POLYGON((0 0,10 0,10 10,0 10,0 0)), MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),((0 0,-2 -2,0 -2, 0 0))))',32000000);
--echo #########################################################################
--echo # Test with geometries with geographic SRS with lat-long ordering outside
--echo # valid range (same geometries as above, but with different error since
--echo # coordinates are flipped).
--echo #########################################################################
--error ER_LATITUDE_OUT_OF_RANGE
SELECT ST_POINTFROMTEXT('POINT(-200 10)',32100000);
--error ER_LATITUDE_OUT_OF_RANGE
SELECT ST_LINEFROMTEXT('LINESTRING(0 5,194 10,10 15)',32100000);
--error ER_LATITUDE_OUT_OF_RANGE
SELECT ST_POLYFROMTEXT('POLYGON((0 0,5 0,5 5,-300 5,0 0))',32100000);
--error ER_LATITUDE_OUT_OF_RANGE
SELECT ST_MPOINTFROMTEXT('MULTIPOINT((0 2), (5 7), (798 2), (4 9))',32100000);
--error ER_LATITUDE_OUT_OF_RANGE
SELECT ST_MLINEFROMTEXT('MULTILINESTRING((0 2,2 4,4 6),(744 11,11 14,14 17))',32100000);
--error ER_LATITUDE_OUT_OF_RANGE
SELECT ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,350 0,350 350,0 350,0 0),(4 4,4 6,6 6,6 4, 4 4)),((0 0,-2 -2,0 -2, 0 0)))',32100000);
--error ER_LATITUDE_OUT_OF_RANGE
SELECT ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(-199 5), POLYGON((0 0,10 0,10 10,0 10,0 0)), MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),((0 0,-2 -2,0 -2, 0 0))))',32100000);
--echo ##############################
--echo # Miscellaneous error testing
--echo ##############################
--error ER_LATITUDE_OUT_OF_RANGE
SELECT ST_POINTFROMTEXT('POINT(-91 10)',32100000);
--error ER_LONGITUDE_OUT_OF_RANGE
SELECT ST_POINTFROMTEXT('POINT(10 -182)',32100000);
--error ER_LONGITUDE_OUT_OF_RANGE
SELECT ST_MLINEFROMTEXT('MULTILINESTRING((0 2,2 4,4 6),(744 11,11 91,14 17))',32000000);
--error ER_LATITUDE_OUT_OF_RANGE
SELECT ST_MLINEFROMTEXT('MULTILINESTRING((0 95,2 4,4 6),(744 11,11 91,14 17))',32000000);
--echo ###################
--echo # Edge case testing
--echo ###################
SELECT ST_ASTEXT(ST_POINTFROMTEXT('POINT(-90.0000000 10)',32100000));
SELECT ST_ASTEXT(ST_POINTFROMTEXT('POINT(10 -180.000000)',32100000));
SELECT ST_ASTEXT(ST_POINTFROMTEXT('POINT(90.0000000 10)',32100000));
SELECT ST_ASTEXT(ST_POINTFROMTEXT('POINT(10 180.000000)',32100000));
--error ER_LATITUDE_OUT_OF_RANGE
SELECT ST_POINTFROMTEXT('POINT(-90.0000001 10)',32100000);
--error ER_LONGITUDE_OUT_OF_RANGE
SELECT ST_POINTFROMTEXT('POINT(10 -180.0000001)',32100000);
--error ER_LATITUDE_OUT_OF_RANGE
SELECT ST_POINTFROMTEXT('POINT(90.0000001 10)',32100000);
--error ER_LONGITUDE_OUT_OF_RANGE
SELECT ST_POINTFROMTEXT('POINT(10 180.0000001)',32100000);
--echo #################################################################
--echo # Test that range restriction does not apply to projected spatial
--echo # reference systems
--echo #################################################################
SELECT ST_ASTEXT(ST_POINTFROMTEXT('POINT(-200 10)',32200000));
SELECT ST_ASTEXT(ST_LINEFROMTEXT('LINESTRING(0 5,194 10,10 15)',32200000));
SELECT ST_ASTEXT(ST_POLYFROMTEXT('POLYGON((0 0,5 0,5 5,-300 5,0 0))',32200000));
SELECT ST_ASTEXT(ST_MPOINTFROMTEXT('MULTIPOINT((0 2), (5 7), (798 2), (4 9))',32200000));
SELECT ST_ASTEXT(ST_MLINEFROMTEXT('MULTILINESTRING((0 2,2 4,4 6),(744 11,11 14,14 17))',32200000));
SELECT ST_ASTEXT(ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,350 0,350 350,0 350,0 0),(4 4,4 6,6 6,6 4, 4 4)),((0 0,-2 -2,0 -2, 0 0)))',32200000));
SELECT ST_ASTEXT(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(-199 5), POLYGON((0 0,10 0,10 10,0 10,0 0)), MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4, 4 4)),((0 0,-2 -2,0 -2, 0 0))))',32200000));
--echo ########################################################
--echo # Test with empty GEOMETRYCOLLECTION with geographic SRS
--echo ########################################################
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION()', 32000000));
SELECT ST_ASTEXT(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION()', 32100000));
# Cleanup.
DROP SPATIAL REFERENCE SYSTEM 30000000;
DROP SPATIAL REFERENCE SYSTEM 30100000;
DROP SPATIAL REFERENCE SYSTEM 30200000;
DROP SPATIAL REFERENCE SYSTEM 30300000;
DROP SPATIAL REFERENCE SYSTEM 32000000;
DROP SPATIAL REFERENCE SYSTEM 32100000;
DROP SPATIAL REFERENCE SYSTEM 32200000;
--echo #
--echo # WL#11096 Don't do Cartesian computations on geographic geometries
--echo #
--echo # Assume SRID 10 is not defined. Should raise warning.
DO ST_ASTEXT(x'0A000000010100000000000000000000000000000000000000');
DO ST_ASWKT(x'0A000000010100000000000000000000000000000000000000');
--echo #
--echo # Bug #27427677 SIG 11 IN STRING::APPEND() METHOD,
--echo # SQL-COMMON/SQL_STRING.CC:535
--echo #
CREATE TABLE t1(c1 GEOMETRY);
INSERT INTO t1 VALUES (ST_GeomFromText('GEOMETRYCOLLECTION(POINT(0 0))'));
SELECT ST_AsText(c1) AS f1 FROM t1 ORDER BY f1;
DROP TABLE t1;