mirror of https://github.com/MariaDB/server
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
408 lines
11 KiB
408 lines
11 KiB
|
|
# Copyright (c) 2014, Oracle and/or its affiliates
|
|
# Copyright (c) 2024, MariaDB Corporation.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; version 2 of the License.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
|
|
|
|
-- disable_warnings
|
|
|
|
#####################################################################
|
|
# ST_GEOHASH()
|
|
#####################################################################
|
|
|
|
# Check for all valid inputs
|
|
--echo # valid inputs
|
|
SELECT ST_GEOHASH(0,0,1);
|
|
|
|
SELECT ST_GEOHASH(180,0,20);
|
|
|
|
SELECT ST_GEOHASH(-180,0,20);
|
|
|
|
SELECT ST_GEOHASH(0,90,20);
|
|
|
|
SELECT ST_GEOHASH(0,-90,20);
|
|
|
|
SELECT ST_GEOHASH(180,90,20);
|
|
|
|
SELECT ST_GEOHASH(180,-90,20);
|
|
|
|
SELECT ST_GEOHASH(-180,90,20);
|
|
|
|
SELECT ST_GEOHASH(-180,-90,20);
|
|
|
|
SELECT ST_GEOHASH(100,45,5);
|
|
|
|
SELECT ST_GEOHASH(100,-45,10);
|
|
|
|
SELECT ST_GEOHASH(-100,45,+50);
|
|
|
|
SELECT ST_GEOHASH(0.0001,0.0001,10);
|
|
|
|
SELECT ST_GEOHASH(0.0001,-0.0001,30);
|
|
|
|
SELECT ST_GEOHASH(-0.0001,0.0001,90);
|
|
|
|
SELECT ST_GEOHASH(-0.0001,-0.0001,100);
|
|
|
|
SELECT ST_GEOHASH("",90,10);
|
|
|
|
SELECT ST_GEOHASH(0,"90",10);
|
|
|
|
SELECT ST_GEOHASH("0","0",10);
|
|
|
|
SELECT ST_GEOHASH(180,90,"20");
|
|
|
|
SELECT ST_GEOHASH("180","90","20");
|
|
|
|
SELECT ST_GEOHASH("***",90,"20");
|
|
|
|
SELECT ST_GEOHASH(180,"***",20);
|
|
|
|
SELECT ST_GEOHASH("abcd",90,20);
|
|
|
|
SELECT ST_GEOHASH(180,"abcd",25-5);
|
|
|
|
SELECT ST_GEOHASH(NULL,90,10);
|
|
|
|
SELECT ST_GEOHASH(180,NULL,10);
|
|
|
|
SELECT ST_GEOHASH(180,90,NULL);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(0 0)'),10);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(180 0)'),20);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(-180 0)'),25);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(0 90)'),30);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(0 -90)'),35);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(180 90)'),40);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(180 -90)'),45);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(-180 90)'),50);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(-180 -90)'),55);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(100 45)'),60);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(100 -45)'),65);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(-100 45)'),70);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(-100 -45)'),75);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('POINT(0.0001 0.0001)'))),80);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('POINT(0.0001 -0.0001)'))),85);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('POINT(-0.0001 0.0001)'))),90);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('POINT(-0.0001 -0.0001)'))),100);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMWKB(0x010100000000000000008066400000000000805640),20);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMWKB(0x010100000000000000008066C00000000000805640),20);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMWKB(0x00000000014066800000000000C056800000000000),20);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMWKB(0x0000000001C066800000000000C056800000000000),20);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(0 0)'),"1");
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(0 0)')," 10 ");
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(0 0)'),"+100");
|
|
|
|
SELECT ST_GEOHASH(NULL,100);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(-0.0001 -0.0001)'),NULL);
|
|
|
|
SELECT ST_GEOHASH(ST_DIFFERENCE(ST_GEOMFROMTEXT('POINT(180 90)'),ST_GEOMFROMTEXT('POINT(0 0)')),20);
|
|
|
|
SELECT ST_GEOHASH(ST_DIFFERENCE(ST_GEOMFROMTEXT('POINT(-180 90)'),ST_GEOMFROMTEXT('MULTIPOINT(0 0,100 100)')),20);
|
|
|
|
SELECT ST_GEOHASH(ST_INTERSECTION(ST_GEOMFROMTEXT('POINT(180 -90)'),ST_GEOMFROMTEXT('POINT(180 -90)')),20);
|
|
|
|
SELECT ST_GEOHASH(ST_INTERSECTION(ST_GEOMFROMTEXT('POINT(-180 -90)'),ST_GEOMFROMTEXT('POINT(-180 -90)')),20);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(180 90)'),(CAST(10 AS BINARY)));
|
|
|
|
SELECT ST_GEOHASH((CAST(10 AS BINARY)),20,1);
|
|
|
|
SELECT ST_GEOHASH(10,(CAST(20 AS BINARY)),1);
|
|
|
|
SELECT ST_GEOHASH((CAST(10 AS BINARY)),(CAST(20 AS BINARY)),1);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT()'),20);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(1)'),20);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(1 a)'),20);
|
|
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(180,90)'),20);
|
|
|
|
# Invalid inputs
|
|
--echo # invalid inputs
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(181,0,10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(1000,90,10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180.0000000000001,-90,10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(-181,0,10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(-1000,90,10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(-180.0000000000001,-90,10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(0,91,10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180,500,10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(-180,90.0000000000001,10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(0,-91,10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180,-500,10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(-180,-90.0000000000001,10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180,90,0);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(-180,90,-1);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180,-90,-100);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(-180,-90,101);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(0,90,1000);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH("181",90,20);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH("-181",90,20);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180,"91",20);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180,"-91",20);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180,90,"0");
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180,90,"-1");
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180,90,"-100");
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180,90,"101");
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180,90,"1000");
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180,90,"");
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(180,90,"****");
|
|
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
SELECT ST_GEOHASH();
|
|
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
SELECT ST_GEOHASH(1);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(1,2);
|
|
|
|
# --error ER_GIS_INVALID_DATA
|
|
# SELECT ST_GEOHASH(-100,-45,100.1);
|
|
|
|
--error ER_PARSE_ERROR
|
|
SELECT ST_GEOHASH(, ,);
|
|
|
|
--error ER_PARSE_ERROR
|
|
SELECT ST_GEOHASH(1,2,);
|
|
|
|
--error ER_PARSE_ERROR
|
|
SELECT ST_GEOHASH(*,0,10);
|
|
|
|
--error ER_PARSE_ERROR
|
|
SELECT ST_GEOHASH(0,*,10);
|
|
|
|
--error ER_PARSE_ERROR
|
|
SELECT ST_GEOHASH(0,0,*);
|
|
|
|
--error ER_BAD_FIELD_ERROR
|
|
SELECT ST_GEOHASH(a,90,10);
|
|
|
|
--error ER_BAD_FIELD_ERROR
|
|
SELECT ST_GEOHASH(180,p,10);
|
|
|
|
--error ER_BAD_FIELD_ERROR
|
|
SELECT ST_GEOHASH(180,90,z);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH((CAST(180 AS DATE)),90,10);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(180,(CAST(90 AS DATE)),10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(181 0)'),10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(1000 90)'),10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(180.0000000000001 -90)'),10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(-181 0)'),10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(-1000 90)'),10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(-180.0000000000001 -90)'),10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(0 91)'),10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(180 500)'),10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(-180 90.0000000000001)'),10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(0 -91)'),10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(180 -500)'),10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(-180 -90.0000000000001)'),10);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(180 90)'),0);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(180 -90)'),-1);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(-180 90)'),-100);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(-180 -90)'),101);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(0 0)'),10000);
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('POINT(180 90)'))),"0");
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('POINT(180 -90)'))),"-1");
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('POINT(-180 90)'))),"-100");
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('POINT(-180 -90)'))),"101");
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('POINT(0 0)'))),"10000");
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(0 0)')," ");
|
|
|
|
--error ER_STD_OUT_OF_RANGE_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(0 0)'),"***");
|
|
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(0 0)'));
|
|
|
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT(),20);
|
|
|
|
--error ER_PARSE_ERROR
|
|
SELECT ST_GEOHASH((ST_GEOMFROMTEXT('POINT(0 0)'),);
|
|
|
|
--error ER_PARSE_ERROR
|
|
SELECT ST_GEOHASH(,10);
|
|
|
|
--error ER_BAD_FIELD_ERROR
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(0 0)'),a);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('LINESTRING(0 0,10 10)'),10);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POLYGON((0 0,10 0,10 10,0 10,0 0))'),10);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('MULTIPOINT(0 0,10 10)'),10);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,10 10),(20 20,30 30))'),10);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)))'),10);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))'),10);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(180 90)'),20.0001);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(ST_GEOMFROMTEXT('POINT(180 90)'),(CAST(10 AS DATE)));
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(ST_INTERSECTION(ST_GEOMFROMTEXT('POINT(180 90)'),ST_GEOMFROMTEXT('POINT(1 1)')),20);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(ST_UNION(ST_GEOMFROMTEXT('POINT(180 90)'),ST_GEOMFROMTEXT('POINT(-180 -90)')),20);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(ST_DIFFERENCE(ST_GEOMFROMTEXT('POINT(180 90)'),ST_GEOMFROMTEXT('MULTIPOINT(0 0,180 90)')),20);
|
|
|
|
--error ER_GIS_INVALID_DATA
|
|
SELECT ST_GEOHASH(ST_SYMDIFFERENCE(ST_GEOMFROMTEXT('POINT(180 90)'),ST_GEOMFROMTEXT('POINT(0 0)')),20);
|
|
|