403Webshell
Server IP : 172.67.216.182  /  Your IP : 162.158.170.245
Web Server : Apache
System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64
User : www ( 1000)
PHP Version : 7.4.33
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /www/server/mysql/src/mysql-test/suite/gis/t/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/server/mysql/src/mysql-test/suite/gis/t/spatial_analysis_functions_centroid.test
##################################################################################
#                                                                                #
# This test is aimed to focus on Spatial Analysis Functions.                     #
#                                                                                #
# ST_Centroid function computes the geometric center of a geometry,              #
# or equivalently, the center of mass of the geometry as a POINT.                #
#                                                                                #
# Creation Date: 2014-06-05                                                      #
# 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                                     #
############################################################################################

# 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_elem_vertical_val= '((5 0,15 25,25 0,15 5,5 0))';
SET @star_elem_horizontal_val= '((25 0,0 15,30 15,22 10,25 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_CENTROID(point)
--echo #####################################################################################

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_center)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_top)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POINT(2.34 -2.34)')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POINT(1e308 -1e308)')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POINT(-0.0000 0.000001)')));

SELECT ST_ASTEXT(ST_CENTROID(g)) FROM gis_geometrycollection WHERE fid=105;

--echo #####################################################################################
--echo # ST_CENTROID(multipoint)
--echo #####################################################################################

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_all_points)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_bottom_points)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTIPOINT(0 0,0 0,0 0,0 0)')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTIPOINT(0 0,0 5,5 5,5 0,0 0)')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTIPOINT(1 -1,1e308 -1e308,0.0001 0.000)')));

SELECT ST_ASTEXT(ST_CENTROID(g)) FROM gis_geometrycollection WHERE fid=108;

--echo #####################################################################################
--echo # ST_CENTROID(linestring)
--echo #####################################################################################

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_top_to_center)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_line_horizontal)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('LINESTRING(0 0,-0.00 0,0.0 0)')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('LINESTRING(1 -1,1e308 -1e308,0.0001 0.000)')));

SELECT ST_ASTEXT(ST_CENTROID(g)) FROM gis_geometrycollection WHERE fid=110;

--echo #####################################################################################
--echo # ST_CENTROID(multilinestring)
--echo #####################################################################################

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_lines_near_vertical)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_lines_near_horizontal)));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,-0.00 0),(0.0 0))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,0 5,5 5,5 0,0 0))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTILINESTRING((0 10,10 0),(10 0,0 0),(0 0,10 10))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTILINESTRING((1 -1,1e308 -1e308,0.0001 0.000),(2 2,4 -9.002))')));

SELECT ST_ASTEXT(ST_CENTROID(g)) FROM gis_geometrycollection WHERE fid=114;

--echo #####################################################################################
--echo # ST_CENTROID(polygon)
--echo #####################################################################################

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_elem_vertical)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POLYGON((0 0,0 5,5 5, 0 0))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,-10 0,-10 -10,0 -10, 0 0))')));

SELECT ST_ASTEXT(ST_CENTROID(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_ASTEXT(ST_CENTROID(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_ASTEXT(ST_CENTROID(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_ASTEXT(ST_CENTROID(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_ASTEXT(ST_CENTROID(g)) FROM gis_geometrycollection WHERE fid=100;

--echo #####################################################################################
--echo # ST_CENTROID(multipolygon)
--echo #####################################################################################

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_of_elems)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5, 0 0)))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 10,10 0,0 0, 0 10)),((0 0,10 10,10 0, 0 0)))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10, 0 0)),((10 10,10 15,15 15,10 10)))')));

SELECT ST_ASTEXT(ST_CENTROID(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_ASTEXT(ST_CENTROID(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_ASTEXT(ST_CENTROID(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_ASTEXT(ST_CENTROID(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_ASTEXT(ST_CENTROID(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_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTIPOLYGON(((10 10,10 0,5 10,10 10)),((0 10,0 20,5 10,0 10)))')));

SELECT ST_ASTEXT(ST_CENTROID(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_ASTEXT(ST_CENTROID(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)))')));

SELECT ST_ASTEXT(ST_CENTROID(g)) FROM gis_geometrycollection WHERE fid=103;

--echo #####################################################################################
--echo # ST_CENTROID(geometrycollection)
--echo #####################################################################################

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_collection_elems)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_collection_multilinestr)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION()')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION())')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10)))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(1 1,2 2,3 3),'
                                                                'MULTILINESTRING((0 0,0 10,10 10,10 0, 0 0),(10 10,10 15,15 15,10 10)))')));

SELECT ST_ASTEXT(ST_CENTROID(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, 0 0),(10 10,10 15,15 15,10 10)))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0, 0 0)))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0, 0 0)))))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0,0 10,10 10,10 0),LINESTRING(0 0,10 0,10 -10,0 -10))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0,10 0,10 10,0 10),LINESTRING(0 0,10 0,10 -10,0 -10))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0)),POLYGON((0 0,10 0,10 -10,0 -10,0 0)))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,0 10,-10 10,-10 0,0 0)),POLYGON((0 0,0 10,10 10,10 0,0 0)))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0,0 10,10 10,10 0,0 0),LINESTRING(0 0,10 0,10 -10,0 -10,0 0))')));

SELECT ST_ASTEXT(ST_CENTROID(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_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(),POLYGON((0 0,0 10,10 10,10 0,0 0)))')));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0)),GEOMETRYCOLLECTION())')));

SELECT ST_ASTEXT(ST_CENTROID(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, 0 0),(10 10,10 15,15 15,10 10))))')));

SELECT ST_ASTEXT(ST_CENTROID(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, 0 0),(10 10,10 15,15 15,10 10))),'
                                                                '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_ASTEXT(ST_CENTROID(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, 0 0),(10 10,10 15,15 15,10 10))),'
                                             'GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))')));

SELECT ST_ASTEXT(ST_CENTROID(g)) FROM gis_geometrycollection WHERE fid=115;

--echo #####################################################################################
--echo # ST_CENTROID(geometry) with different SRID values
--echo #####################################################################################

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_center,-1024)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_all_points,-1)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_top_to_center,0)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_lines_near_vertical,1000)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star,123456789)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_elem_vertical,4294967295)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_of_elems,4294967296)));

SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT(@star_collection_elems,4294967295000)));

--echo #####################################################################################
--echo # Invalid function calls
--echo #####################################################################################

--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
SELECT ST_ASTEXT(ST_CENTROID());

SELECT ST_ASTEXT(ST_CENTROID(NULL));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POINT()')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('LINESTRING()')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POLYGON(())')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTIPOINT()')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTILINESTRING(())')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTIPOLYGON((()))')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POINT(a 0)')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POINT(! 0)')));

--error ER_PARSE_ERROR
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POINT('!' 0)')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POINT(12,34 0)')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('LINESTRING(a 0,10 10)')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('LINESTRING(0 0,! 10)')));

--error ER_PARSE_ERROR
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('LINESTRING('!' 0,10 10)')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('LINESTRING(12,34 0,10 10)')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POLYGON((a 0,10 10,10 0,0 0))')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POLYGON((0 0,! 10,10 0,0 0))')));

--error ER_PARSE_ERROR
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POLYGON(('!' 0,10 10,10 0,0 0))')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POLYGON((12,34 0,10 10,10 0,0 0))')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POLYGON((0 0))')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POLYGON((0 0,5 5))')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POLYGON((0 0,5 5,10 10))')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('POLYGON((0 0,0 5,10 10),(0 0))')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,5 5,10 10)),((10 10)))')));

--error ER_GIS_INVALID_DATA
SELECT ST_ASTEXT(ST_CENTROID(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,5 5,10 10)),((10 10))')));

--error ER_GIS_DATA_WRONG_ENDIANESS
SELECT ST_ASTEXT(ST_CENTROID(0x000000000200000000000000000000000000000000));

--error ER_GIS_DATA_WRONG_ENDIANESS
SELECT ST_ASTEXT(ST_CENTROID(0x010100000001000000010100000000000000000000));

--error ER_GIS_DATA_WRONG_ENDIANESS
SELECT ST_ASTEXT(ST_CENTROID(0x010100000002000000000000000000000000000000));

--error ER_GIS_DATA_WRONG_ENDIANESS
SELECT ST_ASTEXT(ST_CENTROID(0x000000000600000001000000000200000002000000));

--error ER_GIS_DATA_WRONG_ENDIANESS
SELECT ST_ASTEXT(ST_CENTROID(0x000000000200000001000000050000000000000000));

--error ER_GIS_DATA_WRONG_ENDIANESS
SELECT ST_ASTEXT(ST_CENTROID(0x010300000002000000010300000002000000050000));

--error ER_GIS_DATA_WRONG_ENDIANESS
SELECT ST_ASTEXT(ST_CENTROID(0x010400000002000000010100000000000000000000));

--echo # Clean up
DROP TABLE gis_geometrycollection;

--echo #
--echo # Bug #20918881 CRASH WITH CENTROID - INVALID FREE
--echo #

--error ER_GIS_INVALID_DATA
DO ST_Centroid(
  GeometryCollection(
    Polygon(
      LineString(Point(1, 1), Point(2, 2), Point(14, 7)),
      LineString(Point(1, 1), Point(2, 2), Point(3, 3))
    )
  )
);

Youez - 2016 - github.com/yon3zu
LinuXploit