Current Path : /home/usr.opt/mysql57/mysql-test/suite/gis/t/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : /home/usr.opt/mysql57/mysql-test/suite/gis/t/geometry_property_function_issimple.test |
############################################################################### # # # ST_IsSimple checks whether a geometry has anomalous geometric points # # such as self intersection or self tangency, if so returns 0 else 1. # # # # Creation Date: 2015-01-27 # # Author : Pavan Naik # # # ############################################################################### --source include/have_geometry.inc ############################################################################################ # Creating the spatial objects # ############################################################################################ --echo # Creating the spatial Geometry object USE test; CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRY); ############################################################################################ # Inserting the values specific to the spatial objects # ############################################################################################ ############################################################################################ # Inserting the values specific to the spatial objects # ############################################################################################ # Geometric elements constructing a star and some of its elememts as base SET @star_elem_vertical= 'POLYGON((5 0,15 25,25 0,15 5,5 0))'; SET @star_elem_horizontal= 'POLYGON((25 0,0 15,30 15,22 10,25 0))'; SET @star_center= 'POINT(15 10)'; SET @star_top= 'POINT(15 25)'; SET @star_bottom_left= 'POINT(5 0)'; SET @star_bottom_right= 'POINT(25 0)'; SET @star_bottom_points= 'MULTIPOINT(5 0,25 0)'; SET @star_all_points= 'MULTIPOINT(5 0,25 0,15 10,15 25)'; SET @star_line_horizontal= 'LINESTRING(10 15,20 15)'; SET @star_line_vertical= 'LINESTRING(15 5,15 25)'; SET @star_top_to_center= 'LINESTRING(15 25,15 10)'; SET @star_lines_near_horizontal= 'MULTILINESTRING((25 0,0 15,15 30,0 5))'; SET @star_lines_near_vertical= 'MULTILINESTRING((0 5,15 25,0 25))'; SET @star= 'POLYGON((5 0,7 10,0 15,10 15,15 25,20 15,30 15,22 10,25 0,15 5,5 0))'; SET @star_of_elems='MULTIPOLYGON(((5 0,15 25,25 0,15 5,5 0)),((25 0,0 15,30 15,22 10,25 0)))'; SET @star_collection_elems='GEOMETRYCOLLECTION(MULTIPOLYGON(((5 0,15 25,25 0,15 5,5 0)),((25 0,0 15,30 15,22 10,25 0))),POLYGON((5 0,7 10,0 15,10 15,15 25,20 15,30 15,22 10,25 0,15 5,5 0)),LINESTRING(15 25,15 10),MULTIPOINT(5 0,25 0),POINT(15 25))'; SET @star_collection_multilinestr='GEOMETRYCOLLECTION(MULTIPOLYGON(((5 0,15 25,25 0,15 5,5 0)),((25 0,0 15,30 15,22 10,25 0))),POLYGON((5 0,7 10,0 15,10 15,15 25,20 15,30 15,22 10,25 0,15 5,5 0)),MULTILINESTRING((25 0,0 15,15 30,0 5)),LINESTRING(15 25,15 10),MULTIPOINT(5 0,25 0),POINT(15 25))'; --echo # INSERT base star --disable_warnings INSERT INTO gis_geometrycollection VALUES (100,ST_GEOMFROMTEXT(@star)), (101,ST_GEOMFROMTEXT(@star_elem_vertical)), (102,ST_GEOMFROMTEXT(@star_elem_horizontal)), (103,ST_GEOMFROMTEXT(@star_of_elems)), (104,ST_GEOMFROMTEXT(@star_top)), (105,ST_GEOMFROMTEXT(@star_center)), (106,ST_GEOMFROMTEXT(@star_bottom_left)), (107,ST_GEOMFROMTEXT(@star_bottom_right)), (108,ST_GEOMFROMTEXT(@star_bottom_points)), (109,ST_GEOMFROMTEXT(@star_all_points)), (110,ST_GEOMFROMTEXT(@star_line_horizontal)), (111,ST_GEOMFROMTEXT(@star_line_vertical)), (112,ST_GEOMFROMTEXT(@star_top_to_center)), (113,ST_GEOMFROMTEXT(@star_lines_near_horizontal)), (114,ST_GEOMFROMTEXT(@star_lines_near_vertical)), (115,ST_GEOMFROMTEXT(@star_collection_elems)), (116,ST_GEOMFROMTEXT(@star_collection_multilinestr)); --enable_warnings --echo # Checking the integrity of the above create/insert statements --echo # 17 rows. SELECT count(ST_ASTEXT(g) != 'NULL') FROM gis_geometrycollection; --echo ##################################################################################### --echo # ST_ISSIMPLE(geometry) --echo ##################################################################################### --echo #==================================================================================== --echo # point --echo #==================================================================================== SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_center)); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_top)); SELECT ST_ISSIMPLE(g) FROM gis_geometrycollection WHERE fid=105; SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POINT(0 0)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POINT(2.34 -2.34)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POINT(1e100 -1e100)')); --echo #==================================================================================== --echo # multipoint --echo #==================================================================================== SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_all_points)); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_bottom_points)); SELECT ST_ISSIMPLE(g) FROM gis_geometrycollection WHERE fid=108; SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOINT(0 0,1 1,-0 +0)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOINT(0 0,0.0 -0,-0.0 0.000)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOINT(0 0,0 5,5 5,5 0)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOINT(0 0,0 5,5 5,5 0,0 0)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOINT(1 -1,1e100 -1e100,0.0001 0.000)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOINT(1 -1,1e100 1e100,1 1,1e100 1e100)')); --echo #==================================================================================== --echo # linestring --echo #==================================================================================== SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_top_to_center)); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_line_horizontal)); SELECT ST_ISSIMPLE(g) FROM gis_geometrycollection WHERE fid=110; --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING(0 0)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING(0 0,-0.00 0)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING(0 0,1 1,1 1)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING(0 0,1 1,0 0)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING(0 0,10 10,10 0,0 10)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING(0 0,10 10,10 0,0 10,0 0)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING(0 0,1e100 1e100,0.0001 0.000)')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING(0 0,1e100 1e100,-1e100 -1e100,0 0)')); --echo #==================================================================================== --echo # multilinestring --echo #==================================================================================== SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_lines_near_vertical)); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_lines_near_horizontal)); SELECT ST_ISSIMPLE(g) FROM gis_geometrycollection WHERE fid=114; --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTILINESTRING((0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,1 1,1 1))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,0 0),(1 1,3 3))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,-0.00 0),(0.0 0,0 +0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,0 5,5 5,5 0,0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,10 10,10 0,0 10))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,10 10),(10 0,0 10))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,10 10,0 0),(10 10,20 20))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTILINESTRING((0 10,10 0),(10 0,0 0),(0 0,10 10))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTILINESTRING((1 -1,1e100 -1e100,0.0001 0.000),(2 2,4 -9.002))')); --echo #==================================================================================== --echo # polygon --echo #==================================================================================== SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star)); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_elem_vertical)); SELECT ST_ISSIMPLE(g) FROM gis_geometrycollection WHERE fid=100; SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,0 5,5 5,0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,0 0,0 5,5 5,0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,0 5,5 5,5 5,0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,5 10,0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,10 10,-10 10,0 0,10 -10,-10 -10,0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,-10 0,-10 -10,0 -10,0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((4 4,4 6,6 6,6 4,4 4),(0 0,0 10,10 10,10 0,0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((4 4,4 6,6 6,6 4,4 4),(8 8,8 10,10 10,10 8,8 8))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6,4 4),(4 4,4 6,6 6,6 4,4 4))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6,4 4),(6 6,6 8,8 8,8 6,6 6))')); --echo #==================================================================================== --echo # multipolygon --echo #==================================================================================== SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_of_elems)); SELECT ST_ISSIMPLE(g) FROM gis_geometrycollection WHERE fid=103; SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 0,0 5,5 5,0 0)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,0 5,5 5,0 0)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,5 10,0 0)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((3 3,3 6,6 6,6 3,3 3)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 10,10 0,0 0,0 10)),((0 0,10 10,10 0,0 0)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,-10 0,-10 -10,0 -10,0 0)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,0 0)),((10 10,10 15,15 15,10 10)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((4 4,4 6,6 6,6 4,4 4)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((4 4,4 6,6 6,6 4,4 4),(0 0,0 10,10 10,10 0,0 0)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((4 4,4 6,6 6,6 4,4 4),(8 8,8 10,10 10,10 8,8 8)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((10 10,10 0,5 10,10 10)),((0 10,0 20,5 10,0 10)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)),((4 4,4 6,6 6,6 4,4 4)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)),((0 0,0 10,10 10,10 0,0 0)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)),((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,4 4)))')); --echo #==================================================================================== --echo # geometrycollection --echo #==================================================================================== SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_collection_elems)); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_collection_multilinestr)); SELECT ST_ISSIMPLE(g) FROM gis_geometrycollection WHERE fid=115; SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION()')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(),MULTIPOINT(0 0,0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(),LINESTRING(0 0,10 10,10 0,0 0))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(),LINESTRING(0 0,10 10,10 0,0 10))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(),MULTILINESTRING((0 0,10 10),(10 10,20 20)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(),MULTILINESTRING((0 0,10 10),(0 0,10 10,20 20)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),POINT(10 10))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),POINT(10 10)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0,10 10),POINT(5 5))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(5 0,5 10),POLYGON((0 0,0 10,10 10,10 0,0 0)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0,0 10,10 10,10 0),POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(1 1,2 2,3 3),' 'MULTILINESTRING((0 0,0 10,10 10,10 0),(10 10,10 15,15 15,10 10)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),' 'MULTIPOINT(0 0,10 10),' 'LINESTRING(1 1,2 2,3 3),' 'MULTILINESTRING((0 0,0 10,10 10,10 0),(10 10,10 15,15 15,10 10)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0)))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(' 'GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0)))))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)),' 'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((10 10,10 15,15 15,15 10,10 10))))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),' 'MULTIPOINT(0 0,10 10)),' 'GEOMETRYCOLLECTION(LINESTRING(1 1,2 2,3 3),' 'MULTILINESTRING((0 0,0 10,10 10),(10 10,10 15,15 15))))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),' 'MULTIPOINT(0 0,10 10)),' 'GEOMETRYCOLLECTION(LINESTRING(1 1,2 2,3 3),' 'MULTILINESTRING((0 0,0 10,10 10),(10 10,10 15,15 15))),' 'GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)),' 'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((10 10,10 15,15 15,15 10,10 10)))))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),' 'MULTIPOINT(0 0,10 10)),' 'GEOMETRYCOLLECTION(LINESTRING(1 1,2 2,3 3),' 'MULTILINESTRING((0 0,0 10,10 10),(10 10,10 15,15 15))),' 'GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),' 'LINESTRING(0 0,0 1,1 1,1 0,0 0),' 'POLYGON((0 0,0 10,10 10,10 0,0 0)),' 'MULTIPOINT(0 0,1 1,2 2,3 3),' 'MULTILINESTRING((0 0,0 10),(10 10,10 0)),' 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((10 10,10 15,15 15,15 10,10 10))))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),' 'LINESTRING(0 0,1 1,1 0,0 1),' 'POLYGON((0 0,0 10,10 10,10 0,0 0)),' 'MULTIPOINT(0 0,1 1,2 2,3 3),' 'MULTILINESTRING((0 0,0 10),(10 10,10 0)),' 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((10 10,10 15,15 15,15 10,10 10))))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),' 'LINESTRING(0 0,0 1,1 1,1 0,0 0),' 'POLYGON((0 0,0 10,10 10,10 0,0 0)),' 'MULTIPOINT(0 0,1 1,2 2,3 3,0 0),' 'MULTILINESTRING((0 0,0 10),(10 10,10 0)),' 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((10 10,10 15,15 15,15 10,10 10))))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),' 'LINESTRING(0 0,0 1,1 1,1 0,0 0),' 'POLYGON((0 0,0 10,10 10,10 0,0 0)),' 'MULTIPOINT(0 0,1 1,2 2,3 3),' 'MULTILINESTRING((0 0,10 10),(0 10,10 0)),' 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((10 10,10 15,15 15,15 10,10 10))))')); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),' 'LINESTRING(0 0,0 1,1 1,1 0,0 0),' 'POLYGON((0 0,0 10,10 10,10 0,0 0,0 0)),' 'MULTIPOINT(0 0,1 1,2 2,3 3),' 'MULTILINESTRING((0 0,10 0),(0 10,10 10)),' 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((10 10,10 15,15 15,15 10,10 10))))')); --echo ##################################################################################### --echo # ST_ISSIMPLE(geometry) with different SRID values --echo ##################################################################################### SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_center,-1024)); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_all_points,-1)); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_top_to_center,0)); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_lines_near_vertical,4326)); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star,123456789)); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_elem_vertical,4294967295)); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_of_elems,4294967296)); SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT(@star_collection_elems,4294967295000)); --echo ##################################################################################### --echo # Invalid function calls --echo ##################################################################################### --error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT SELECT ST_ISSIMPLE(); SELECT ST_ISSIMPLE(NULL); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POINT()')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING()')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON(())')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOINT()')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTILINESTRING(())')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON((()))')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POINT(a 0)')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POINT(! 0)')); --error ER_PARSE_ERROR SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POINT('!' 0)')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POINT(12,34 0)')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING(a 0,10 10)')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING(0 0,! 10)')); --error ER_PARSE_ERROR SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING('!' 0,10 10)')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('LINESTRING(12,34 0,10 10)')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((a 0,10 10,10 0,0 0))')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0))')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,2 2,4 4))')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,2 2,0 0))')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((0 0,! 10,10 0,0 0))')); --error ER_PARSE_ERROR SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON(('!' 0,10 10,10 0,0 0))')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('POLYGON((12,34 0,10 10,10 0,0 0))')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5)),((0 0)))')); --error ER_GIS_INVALID_DATA SELECT ST_ISSIMPLE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5)),((0 0,2 2,3 3)))')); --error ER_GIS_DATA_WRONG_ENDIANESS SELECT ST_ISSIMPLE(0x000000000200000000000000000000000000000000); --error ER_GIS_DATA_WRONG_ENDIANESS SELECT ST_ISSIMPLE(0x010100000001000000010100000000000000000000); --error ER_GIS_DATA_WRONG_ENDIANESS SELECT ST_ISSIMPLE(0x010100000002000000000000000000000000000000); --error ER_GIS_DATA_WRONG_ENDIANESS SELECT ST_ISSIMPLE(0x000000000600000001000000000200000002000000); --error ER_GIS_DATA_WRONG_ENDIANESS SELECT ST_ISSIMPLE(0x000000000200000001000000050000000000000000); --error ER_GIS_DATA_WRONG_ENDIANESS SELECT ST_ISSIMPLE(0x010300000002000000010300000002000000050000); --error ER_GIS_DATA_WRONG_ENDIANESS SELECT ST_ISSIMPLE(0x010400000002000000010100000000000000000000); --echo # Clean up DROP TABLE gis_geometrycollection; --echo # --echo # Bug #21841051 PREPARE STATEMENT RETURNS DIFFERENT NUMBER OF ROWS WHEN --echo # EXECUTED SECOND TIME --echo # CREATE TABLE t1 (id INT, g GEOMETRY); INSERT INTO t1 VALUES (2, ST_GeomFromText('POINT(0 0)')); CREATE TABLE t2 (id INT); INSERT INTO t2 VALUES (1), (3); PREPARE stmt FROM 'SELECT ST_IsSimple(g) AS a1 FROM t1 RIGHT OUTER JOIN t2 ON (t1.id > t2.id) GROUP BY a1'; EXECUTE stmt; EXECUTE stmt; DEALLOCATE PREPARE stmt; DROP TABLE t1, t2;