mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 53f82a9c3d
			
		
	
	
	53f82a9c3d
	
	
	
		
			
			Like MDEV-35062, reserve sufficient space in the result for q_append'ed data, as q_append does not itself reserve space like it's append counterpart.
		
			
				
	
	
		
			482 lines
		
	
	
	
		
			25 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			482 lines
		
	
	
	
		
			25 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| # Creating the spatial Geometry object
 | |
| USE test;
 | |
| CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRY);
 | |
| 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))';
 | |
| # INSERT base star
 | |
| 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));
 | |
| # Checking the integrity of the above create/insert statements
 | |
| # 17 rows.
 | |
| SELECT count(ST_ASTEXT(g) != 'NULL') FROM gis_geometrycollection;
 | |
| count(ST_ASTEXT(g) != 'NULL')
 | |
| 17
 | |
| #####################################################################################
 | |
| # ST_ISVALID(geometry)
 | |
| #####################################################################################
 | |
| #====================================================================================
 | |
| # point
 | |
| #====================================================================================
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_center));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_center))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_top));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_top))
 | |
| 1
 | |
| SELECT ST_ISVALID(g) FROM gis_geometrycollection WHERE fid=105;
 | |
| ST_ISVALID(g)
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT(2.34 -2.34)'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('POINT(2.34 -2.34)'))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT(1e308 -1e308)'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('POINT(1e308 -1e308)'))
 | |
| 1
 | |
| #====================================================================================
 | |
| # multipoint
 | |
| #====================================================================================
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_all_points));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_all_points))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_bottom_points));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_bottom_points))
 | |
| 1
 | |
| SELECT ST_ISVALID(g) FROM gis_geometrycollection WHERE fid=108;
 | |
| ST_ISVALID(g)
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOINT(0 0,0 0,0 0,0 0)'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOINT(0 0,0 0,0 0,0 0)'))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOINT(0 0,0 5,5 5,5 0,0 0)'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOINT(0 0,0 5,5 5,5 0,0 0)'))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOINT(1 -1,1e308 -1e308,0.0001 0.000)')) c;
 | |
| c
 | |
| 1
 | |
| #====================================================================================
 | |
| # linestring
 | |
| #====================================================================================
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_top_to_center));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_top_to_center))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_line_horizontal));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_line_horizontal))
 | |
| 1
 | |
| SELECT ST_ISVALID(g) FROM gis_geometrycollection WHERE fid=110;
 | |
| ST_ISVALID(g)
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(0 0)'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(0 0)'))
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(0 0,-0.00 0,0.0 0)'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(0 0,-0.00 0,0.0 0)'))
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(1 -1,1e308 -1e308,0.0001 0.000)')) c;
 | |
| c
 | |
| 1
 | |
| #====================================================================================
 | |
| # multilinestring
 | |
| #====================================================================================
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_lines_near_vertical));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_lines_near_vertical))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_lines_near_horizontal));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_lines_near_horizontal))
 | |
| 1
 | |
| SELECT ST_ISVALID(g) FROM gis_geometrycollection WHERE fid=114;
 | |
| ST_ISVALID(g)
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTILINESTRING((0 0))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('MULTILINESTRING((0 0))'))
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,1 1,2 2),(3 3))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,-0.00 0),(0.0 0))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,0 5,5 5,5 0,0 0))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTILINESTRING((0 10,10 0),(10 0,0 0),(0 0,10 10))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTILINESTRING((1 -1,1e308 -1e308,0.0001 0.000),(2 2,4 -9.002))')) c;
 | |
| c
 | |
| 1
 | |
| #====================================================================================
 | |
| # polygon
 | |
| #====================================================================================
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_elem_vertical));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_elem_vertical))
 | |
| 1
 | |
| SELECT ST_ISVALID(g) FROM gis_geometrycollection WHERE fid=100;
 | |
| ST_ISVALID(g)
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0))'))
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,0 5,5 5,0 0))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,0 5,5 5,0 0))'))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0,-10 0,-10 -10,0 -10,0 0))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0),(0 0,0 10,10 10,10 0,0 0))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((4 4,4 6,6 6,6 4,4 4,4 4),(0 0,0 10,10 10,10 0,0 0))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((4 4,4 6,6 6,6 4,4 4,4 4),(8 8,8 10,10 10,10 8,8 8))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,6 4,6 6,4 6,4 4),(4 4,4 6,6 6,6 4,4 4))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,6 4,6 6,4 6,4 4),(6 6,6 8,8 8,8 6,6 6))')) c;
 | |
| c
 | |
| 1
 | |
| #====================================================================================
 | |
| # multipolygon
 | |
| #====================================================================================
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_of_elems));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_of_elems))
 | |
| 0
 | |
| SELECT ST_ISVALID(g) FROM gis_geometrycollection WHERE fid=103;
 | |
| ST_ISVALID(g)
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)))'))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((1 1, 1 1, 1 1, 1 1, 1 1)))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 10,10 0,0 0,0 10)),((0 0,10 10,10 0,0 0)))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,0 0)),((10 10,10 15,15 15,10 10)))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0)),((4 4,4 6,6 6,6 4,4 4,4 4)))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0),(0 0,0 10,10 10,10 0,0 0)))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((4 4,4 6,6 6,6 4,4 4,4 4),(0 0,0 10,10 10,10 0,0 0)))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((4 4,4 6,6 6,6 4,4 4,4 4),(8 8,8 10,10 10,10 8,8 8)))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((10 10,10 0,5 10,10 10)),((0 10,0 20,5 10,0 10)))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)),((4 4,4 6,6 6,6 4,4 4,4 4)))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0),(0 0,0 10,10 10,10 0,0 0)),((0 0,0 10,10 10,10 0,0 0,0 0)))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0),(0 0,0 10,10 10,10 0,0 0)),((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,4 6,6 6,4 4)))')) c;
 | |
| c
 | |
| 0
 | |
| #====================================================================================
 | |
| # geometrycollection
 | |
| #====================================================================================
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_collection_elems));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_collection_elems))
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_collection_multilinestr));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_collection_multilinestr))
 | |
| 0
 | |
| SELECT ST_ISVALID(g) FROM gis_geometrycollection WHERE fid=115;
 | |
| ST_ISVALID(g)
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION()'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION()'))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10)))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10)))'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0),POINT(10 10))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0),GEOMETRYCOLLECTION())'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0),GEOMETRYCOLLECTION())'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,1 1,2 2,0 0)),GEOMETRYCOLLECTION())'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,1 1,2 2,0 0)),GEOMETRYCOLLECTION())'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0,10 10,20 20),POLYGON((0 0,10 10,100 100,0 0)))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0),POLYGON((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)))')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_ISVALID(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)))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(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)))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0,0 0)))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION('
 | |
|                                                            'GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0,0 0)))))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION('
 | |
|                                                            'GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0,0 0)))))'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)),'
 | |
|                                                      'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0)),((10 10,10 15,15 15,15 10,10 10))))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(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 0),(10 10,10 15,15 15,10 10))))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),'
 | |
|                                                                         'MULTIPOINT(0 0,10 10)),'
 | |
|                                                      'GEOMETRYCOLLECTION(LIN
 | |
| NULL
 | |
| SELECT ST_ISVALID(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 0),(10 10,10 15,15 15,10 10))),'
 | |
|                                                      'GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)),'
 | |
|                                                                         'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0)),((10 10,10 15,15 15,15 10,10 10)))))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),'
 | |
|                                                                         'MULTIPOINT(0 0,10 10)),'
 | |
|                                                      'GEOMETRYCOLLECTION(LIN
 | |
| NULL
 | |
| SELECT ST_ISVALID(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 0),(10 10,10 15,15 15,10 10))),'
 | |
|                                                      'GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),'
 | |
|                                                                         'MULTIPOINT(0 0,10 10)),'
 | |
|                                                      'GEOMETRYCOLLECTION(LIN
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),'
 | |
|                                                      'LINESTRING(1 1,2 2,3 3),'
 | |
|                                                      'POLYGON((0 0,0 10,10 10,10 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)),'
 | |
|                                                      'MULTIPOINT(0 0,10 10),'
 | |
|                                                      'MULTILINESTRING((0 0,0 10,10 10,10 0),(10 10,10 15,15 15,10 10)),'
 | |
|                                                      'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0)),((10 10,10 15,15 15,15 10,10 10))))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(MULTILINESTRING((-7 -2,-9 3,-2 -8),(3 7,5 6,-7 -9,7 -1,-2 -8,2 9,4 6,-5 -5)),'
 | |
|                                                      'MULTILINESTRING((2 -2,2 -3,2 -1,-10 7,1 -2,-2 0,-9 -2,10 5,-7 -8,-9 -1,1 -1,-2 3,5 -9,-8 -9,-10 -9)),'
 | |
|                                                      'MULTIPOINT(-7 -5,6 9,7 4))')) c;
 | |
| c
 | |
| 1
 | |
| #####################################################################################
 | |
| # Invalid function calls
 | |
| #####################################################################################
 | |
| SELECT ST_ISVALID();
 | |
| ERROR 42000: Incorrect parameter count in the call to native function 'ST_ISVALID'
 | |
| SELECT ST_ISVALID(NULL);
 | |
| ST_ISVALID(NULL)
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT()'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('POINT()'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING()'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING()'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON(())'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('POLYGON(())'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOINT()'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOINT()'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTILINESTRING(())'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('MULTILINESTRING(())'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON((()))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('MULTIPOLYGON((()))'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT(a 0)'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('POINT(a 0)'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT(! 0)'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('POINT(! 0)'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT('!' 0)'));
 | |
| ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '!' 0)'))' at line 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POINT(12,34 0)'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('POINT(12,34 0)'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(a 0,10 10)'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(a 0,10 10)'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(0 0,! 10)'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(0 0,! 10)'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING('!' 0,10 10)'));
 | |
| ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '!' 0,10 10)'))' at line 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(12,34 0,10 10)'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('LINESTRING(12,34 0,10 10)'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((a 0,10 10,10 0,0 0))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((a 0,10 10,10 0,0 0))'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,! 10,10 0,0 0))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((0 0,! 10,10 0,0 0))'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON(('!' 0,10 10,10 0,0 0))'));
 | |
| ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '!' 0,10 10,10 0,0 0))'))' at line 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((12,34 0,10 10,10 0,0 0))'));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((12,34 0,10 10,10 0,0 0))'))
 | |
| NULL
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_center,-1024));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_center,-1024))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_all_points,-1));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_all_points,-1))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_lines_near_vertical,4236));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_lines_near_vertical,4236))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_elem_vertical,4294967295));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_elem_vertical,4294967295))
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_of_elems,4294967297));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_of_elems,4294967297))
 | |
| 0
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT(@star_collection_elems,4294967295000));
 | |
| ST_ISVALID(ST_GEOMFROMTEXT(@star_collection_elems,4294967295000))
 | |
| 0
 | |
| SELECT ST_ISVALID( x'e6100000010100000000000000000000000000000000000000') c;
 | |
| c
 | |
| 1
 | |
| # Clean up
 | |
| DROP TABLE gis_geometrycollection;
 | |
| ########################################################################
 | |
| # BUG#21927394 ST_ISVALID() RETURNS FALSE WITH VALID POLYGON GEOMETRY
 | |
| ########################################################################
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((72.8714768817168
 | |
| -167.0048853643874,9274.40641550926 3433.5957427942167,-58.09039811390054
 | |
| 187.50989457746405,-81.09039811390053 179.50989457746405,-207.99999999999997
 | |
| 135.36742435621204,-208 1,-208 0,-208 -276.9111154485375,49.8714768817168
 | |
| -176.0048853643874,72.8714768817168 -167.0048853643874))')) c;
 | |
| c
 | |
| 1
 | |
| SELECT ST_ISVALID(ST_GEOMFROMTEXT('POLYGON((-200 0,-207.99999999999997
 | |
| 135.36742435621204,-208 1,-208 0,-208 -276.9111154485375,-200 0))')) c;
 | |
| c
 | |
| 1
 | |
| #
 | |
| # MDEV-35103 CREATE TABLE AS SELECT ST_VALIDATE creates a column with datatype point, not geometry
 | |
| #
 | |
| create or replace table tb1 as SELECT  st_validate(POINTFROMTEXT(' POINT( 4 1 ) ')) a;
 | |
| create or replace table tb1 as SELECT  st_validate(ST_GeomFromText (' linestring( 4 1,4 4 ) ')) a;
 | |
| create table tb2 as  SELECT (st_validate (ST_collect(( POINTFROMTEXT(' POINT( 4 1 ) ') ))  )) a;
 | |
| drop table tb1, tb2;
 | |
| ########################################################################
 | |
| # MDEV-35126 Wrong results from st_isvalid or st_validate function, while using multipolygon.
 | |
| ########################################################################
 | |
| select ST_isvalid(ST_GEOMFROMTEXT('multipolygon(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)), ((59 18,67 18,67 13,59 13,59 18)))'));
 | |
| ST_isvalid(ST_GEOMFROMTEXT('multipolygon(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)), ((59 18,67 18,67 13,59 13,59 18)))'))
 | |
| 1
 | |
| select ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 0 0, 6 0, 1 2, 0 0)), (( 7 7, 1 8, 7 0, 7 7 ))) '));
 | |
| ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 0 0, 6 0, 1 2, 0 0)), (( 7 7, 1 8, 7 0, 7 7 ))) '))
 | |
| 1
 | |
| SELECT ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 40 40, 80 40, 100 0, 120 40, 160 40, 130 70, 150 110, 100 90, 50 110, 70 70, 40 40)), ((70 50, 80 50, 80 60, 70 60, 70 50)))'));
 | |
| ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 40 40, 80 40, 100 0, 120 40, 160 40, 130 70, 150 110, 100 90, 50 110, 70 70, 40 40)), ((70 50, 80 50, 80 60, 70 60, 70 50)))'))
 | |
| 0
 | |
| SELECT ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 40 40, 80 40, 100 0, 120 40, 160 40, 130 70, 150 110, 100 90, 50 110, 70 70, 40 40)), ((90 50, 100 50, 100 60, 90 60, 90 50)))'));
 | |
| ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 40 40, 80 40, 100 0, 120 40, 160 40, 130 70, 150 110, 100 90, 50 110, 70 70, 40 40)), ((90 50, 100 50, 100 60, 90 60, 90 50)))'))
 | |
| 0
 | |
| SELECT ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 40 40, 80 40, 100 0, 120 40, 160 40, 130 70, 150 110, 100 90, 50 110, 70 70, 40 40)), ((60 20, 70 20, 70 30, 60 30, 60 20)))'));
 | |
| ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 40 40, 80 40, 100 0, 120 40, 160 40, 130 70, 150 110, 100 90, 50 110, 70 70, 40 40)), ((60 20, 70 20, 70 30, 60 30, 60 20)))'))
 | |
| 1
 | |
| SELECT ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 80 200, 110 210, 140 270, 70 280, 40 250, 60 220, 80 200)), (( 120 210, 160 260, 140 260, 120 210)))'));
 | |
| ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 80 200, 110 210, 140 270, 70 280, 40 250, 60 220, 80 200)), (( 120 210, 160 260, 140 260, 120 210)))'))
 | |
| 1
 | |
| SELECT ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 80 200, 110 210, 140 270, 70 280, 40 250, 60 220, 80 200)), (( 90 220, 110 240, 60 250, 90 220)))'));
 | |
| ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 80 200, 110 210, 140 270, 70 280, 40 250, 60 220, 80 200)), (( 90 220, 110 240, 60 250, 90 220)))'))
 | |
| 0
 | |
| SELECT ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 0 0, 5 5, 5 0, 0 5, 0 0)), (( 2 0, 3 0, 2 1, 2 0 ))) '));
 | |
| ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 0 0, 5 5, 5 0, 0 5, 0 0)), (( 2 0, 3 0, 2 1, 2 0 ))) '))
 | |
| 0
 | |
| SELECT ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 0 0, 3 0, 0 3, 0 0)), (( 3 0, 3 3, 0 3, 3 0))) '));
 | |
| ST_isvalid(ST_GEOMFROMTEXT(' MULTIPOLYGON((( 0 0, 3 0, 0 3, 0 0)), (( 3 0, 3 3, 0 3, 3 0))) '))
 | |
| 0
 | |
| SELECT ST_IsValid(ST_GEOMFROMTEXT(' POLYGON( ( 0 0, 0 0, 8 0, 0 0 ) )  '));
 | |
| ST_IsValid(ST_GEOMFROMTEXT(' POLYGON( ( 0 0, 0 0, 8 0, 0 0 ) )  '))
 | |
| 0
 | |
| SELECT ST_IsValid(ST_GEOMFROMTEXT('  MULTIPOLYGON( ( ( 2 2, 2 8, 8 8, 8 2, 2 2 ), ( 4 4, 4 6, 6 6, 6 4, 4 4 ) ), ( ( 2 2, 1 2, 0 5, 2 9, 2 2 ) ) ) ')) c;
 | |
| c
 | |
| 0
 | |
| SELECT ST_IsValid(ST_GEOMFROMTEXT('  MULTIPOLYGON( ( (2 2, 2 4, 4 4, 4 2, 2 2) ), ( (3 5, 2 5, 2 4, 3 4, 3 5) ) ) '));
 | |
| ST_IsValid(ST_GEOMFROMTEXT('  MULTIPOLYGON( ( (2 2, 2 4, 4 4, 4 2, 2 2) ), ( (3 5, 2 5, 2 4, 3 4, 3 5) ) ) '))
 | |
| 0
 | |
| #
 | |
| # MDEV-36042 Assertion failed in Binary_string::q_append
 | |
| #
 | |
| SELECT st_astext(ST_VALIDATE(ST_SYMDIFFERENCE(ST_GEOMFROMTEXT(' MULTIPOLYGON( ( ( 2 2, 2 8, 8 8, 8 2, 2 2 ), ( 4 4, 4 6, 6 6, 6 4, 4 4 ) ), ( (0 2,1 2,1 3,0 3,0 2) ) ) '),  ST_GEOMFROMTEXT(' POLYGON( ( 2 4, 5 8, 0 8, 8 1, 7 6, 2 4 ) ) ') ) ) ) <> '';
 | |
| st_astext(ST_VALIDATE(ST_SYMDIFFERENCE(ST_GEOMFROMTEXT(' MULTIPOLYGON( ( ( 2 2, 2 8, 8 8, 8 2, 2 2 ), ( 4 4, 4 6, 6 6, 6 4, 4 4 ) ), ( (0 2,1 2,1 3,0 3,0 2) ) ) '),  ST_GEOMFROMTEXT(' POLYGON( ( 2 4, 5 8, 0 8, 8 1, 7 6, 2 4 ) ) ') ) ) ) <> ''
 | |
| 1
 |