mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
MDEV-6073 Merge gis test cases form 5.6.
Tests were merged. As the implementation is different, the 'internal debugging' part was not merged, only a stub for it created.
This commit is contained in:
parent
439f75f849
commit
80a02037df
11 changed files with 892 additions and 0 deletions
161
mysql-test/include/gis_debug.inc
Normal file
161
mysql-test/include/gis_debug.inc
Normal file
|
@ -0,0 +1,161 @@
|
|||
#
|
||||
# This is a shared file included from t/gis-precise.test and t/gis-debug.test
|
||||
#
|
||||
# - gis-precise.test is executed both in debug and production builds
|
||||
# and makes sure that the checked GIS functions return the expected results.
|
||||
#
|
||||
# - gis-debug.test is executed only in debug builds
|
||||
# (and is skipped in production builds).
|
||||
# gis-debug.test activates tracing of the internal GIS routines.
|
||||
# The trace log is printed to the client side warnings.
|
||||
# So gis-debug.test makes sure not only that the correct results are returned,
|
||||
# but also check *how* these results were generated - makes sure that
|
||||
# the internal GIS routines went through the expected data and code flow paths.
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS p1;
|
||||
--enable_warnings
|
||||
|
||||
DELIMITER |;
|
||||
CREATE PROCEDURE p1(dist DOUBLE, geom TEXT)
|
||||
BEGIN
|
||||
DECLARE g GEOMETRY;
|
||||
SET g=GeomFromText(geom);
|
||||
SELECT geom AS `-----`;
|
||||
SELECT dist, GeometryType(@buf:=ST_Buffer(g, dist)) AS `buffer`, ROUND(ST_AREA(@buf),2) AS buf_area;
|
||||
END|
|
||||
DELIMITER ;|
|
||||
|
||||
--disable_query_log
|
||||
|
||||
--echo #
|
||||
--echo # Testing ST_BUFFER with positive distance
|
||||
--echo #
|
||||
|
||||
CALL p1(1, 'POINT(0 0))');
|
||||
CALL p1(1, 'LineString(0 1, 1 1))');
|
||||
CALL p1(1, 'LineString(9 9,8 1,1 5,0 0)');
|
||||
CALL p1(1, 'Polygon((2 2,2 8,8 8,8 2,2 2))');
|
||||
CALL p1(1, 'Polygon((0 0,0 8,8 8,8 0,0 0),(2 2,6 2,6 6,2 6,2 2))');
|
||||
CALL p1(1, 'Polygon((0 0, 0 8, 8 8, 8 10, -10 10, -10 0, 0 0))');
|
||||
CALL p1(1, 'MultiPoint(9 9,8 1,1 5)');
|
||||
CALL p1(1, 'MultiLineString((0 0,2 2))');
|
||||
CALL p1(1, 'MultiLineString((0 0,2 2,0 4))');
|
||||
CALL p1(1, 'MultiLineString((0 0,2 2),(0 2,2 0))');
|
||||
CALL p1(1, 'MultiLineString((2 2,2 8,-2 8),(-6 -6, 6 6),(10 10, 14 14))');
|
||||
CALL p1(1, 'MultiPolygon(((2 2,2 8,8 8,8 2,2 2)), ((9 9,8 1,1 5,9 9)))');
|
||||
CALL p1(1, 'MultiPolygon(((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)),((9 9,8 1,1 5,9 9)))');
|
||||
CALL p1(1, 'GeometryCollection(Point(0 0))');
|
||||
CALL p1(1, 'GeometryCollection(LineString(0 0, 2 2)))');
|
||||
CALL p1(1, 'GeometryCollection(Polygon((2 2,2 8,8 8,8 2,2 2))))');
|
||||
CALL p1(1, 'GeometryCollection(MultiPoint(9 9,8 1,1 5))');
|
||||
CALL p1(1, 'GeometryCollection(MultiLineString((0 0,0 1),(3 0,3 1)))');
|
||||
CALL p1(1, 'GeometryCollection(MultiPolygon(((0 0, 3 0, 3 3, 0 3, 0 0)),((6 6,6 9,9 9,9 6,6 6))))');
|
||||
CALL p1(1, 'GeometryCollection(Point(9 9),LineString(1 5,0 0),Polygon((2 2,2 8,8 8,8 2,2 2)))');
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Testing ST_BUFFER with zero distance
|
||||
--echo #
|
||||
|
||||
CALL p1(0, 'POINT(0 0))');
|
||||
CALL p1(0, 'LineString(0 1, 1 1))');
|
||||
CALL p1(0, 'LineString(9 9,8 1,1 5,0 0)');
|
||||
CALL p1(0, 'Polygon((2 2,2 8,8 8,8 2,2 2))');
|
||||
CALL p1(0, 'Polygon((0 0,0 8,8 8,8 0,0 0),(2 2,6 2,6 6,2 6,2 2))');
|
||||
CALL p1(0, 'Polygon((0 0, 0 8, 8 8, 8 10, -10 10, -10 0, 0 0))');
|
||||
CALL p1(0, 'MultiPoint(9 9,8 1,1 5)');
|
||||
CALL p1(0, 'MultiLineString((0 0,2 2))');
|
||||
CALL p1(0, 'MultiLineString((0 0,2 2,0 4))');
|
||||
CALL p1(0, 'MultiLineString((0 0,2 2),(0 2,2 0))');
|
||||
CALL p1(0, 'MultiLineString((2 2,2 8,-2 8),(-6 -6, 6 6),(10 10, 14 14))');
|
||||
CALL p1(0, 'MultiPolygon(((2 2,2 8,8 8,8 2,2 2)), ((9 9,8 1,1 5,9 9)))');
|
||||
CALL p1(0, 'MultiPolygon(((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)),((9 9,8 1,1 5,9 9)))');
|
||||
CALL p1(0, 'GeometryCollection(Point(0 0))');
|
||||
CALL p1(0, 'GeometryCollection(LineString(0 0, 2 2)))');
|
||||
CALL p1(0, 'GeometryCollection(Polygon((2 2,2 8,8 8,8 2,2 2))))');
|
||||
CALL p1(0, 'GeometryCollection(MultiPoint(9 9,8 1,1 5))');
|
||||
CALL p1(0, 'GeometryCollection(MultiLineString((0 0,0 1),(3 0,3 1)))');
|
||||
CALL p1(0, 'GeometryCollection(MultiPolygon(((0 0, 3 0, 3 3, 0 3, 0 0)),((6 6,6 9,9 9,9 6,6 6))))');
|
||||
CALL p1(0, 'GeometryCollection(Point(9 9),LineString(1 5,0 0),Polygon((2 2,2 8,8 8,8 2,2 2)))');
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Testing ST_BUFFER with negative distance
|
||||
--echo #
|
||||
|
||||
CALL p1(-1, 'POINT(0 0))');
|
||||
CALL p1(-1, 'LineString(0 1, 1 1))');
|
||||
CALL p1(-1, 'LineString(9 9,8 1,1 5,0 0)');
|
||||
CALL p1(-1, 'Polygon((2 2,2 8,8 8,8 2,2 2))');
|
||||
#
|
||||
# Wrong shape
|
||||
# CALL p1(-1, 'Polygon((0 0,0 8,8 8,8 0,0 0),(2 2,6 2,6 6,2 6,2 2))');
|
||||
# Wrong shape
|
||||
# CALL p1(-1, 'Polygon((0 0, 0 8, 8 8, 8 10, -10 10, -10 0, 0 0))');
|
||||
#
|
||||
CALL p1(-1, 'MultiPoint(9 9,8 1,1 5)');
|
||||
CALL p1(-1, 'MultiLineString((0 0,2 2))');
|
||||
CALL p1(-1, 'MultiLineString((0 0,2 2,0 4))');
|
||||
CALL p1(-1, 'MultiLineString((0 0,2 2),(0 2,2 0))');
|
||||
CALL p1(-1, 'MultiLineString((2 2,2 8,-2 8),(-6 -6, 6 6),(10 10, 14 14))');
|
||||
#
|
||||
# Wrong shape
|
||||
#CALL p1(-1, 'MultiPolygon(((2 2,2 8,8 8,8 2,2 2)), ((9 9,8 1,1 5,9 9)))');
|
||||
#CALL p1(-1, 'MultiPolygon(((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)),((9 9,8 1,1 5,9 9)))');
|
||||
#
|
||||
CALL p1(-1, 'GeometryCollection(Point(0 0))');
|
||||
CALL p1(-1, 'GeometryCollection(LineString(0 0, 2 2)))');
|
||||
CALL p1(-1, 'GeometryCollection(Polygon((2 2,2 8,8 8,8 2,2 2))))');
|
||||
CALL p1(-1, 'GeometryCollection(MultiPoint(9 9,8 1,1 5))');
|
||||
CALL p1(-1, 'GeometryCollection(MultiLineString((0 0,0 1),(3 0,3 1)))');
|
||||
#
|
||||
# Wrong shape
|
||||
# CALL p1(-1, 'GeometryCollection(MultiPolygon(((0 0, 3 0, 3 3, 0 3, 0 0)),((6 6,6 9,9 9,9 6,6 6))))');
|
||||
#
|
||||
CALL p1(-1, 'GeometryCollection(Point(9 9),LineString(1 5,0 0),Polygon((2 2,2 8,8 8,8 2,2 2)))');
|
||||
|
||||
|
||||
--enable_query_log
|
||||
|
||||
SELECT ST_CONTAINS(
|
||||
GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'),
|
||||
GeomFromText('POINT(5 10)'));
|
||||
SELECT AsText(ST_UNION(
|
||||
GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'),
|
||||
GeomFromText('POINT(5 10)')));
|
||||
|
||||
DROP PROCEDURE p1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #13833019 ASSERTION `T1->RESULT_RANGE' FAILED IN GCALC_OPERATION_REDUCER::END_COUPLE
|
||||
--echo #
|
||||
SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3));
|
||||
|
||||
--echo #
|
||||
--echo # Bug #13832749 HANDLE_FATAL_SIGNAL IN GCALC_FUNCTION::COUNT_INTERNAL
|
||||
--echo #
|
||||
SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1));
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#13358363 - ASSERTION: N > 0 && N < SINUSES_CALCULATED*2+1 | GET_N_SINCOS/ADD_EDGE_BUFFER
|
||||
--echo #
|
||||
|
||||
DO ST_BUFFER(ST_GEOMCOLLFROMTEXT('linestring(1 1,2 2)'),'');
|
||||
|
||||
SELECT ST_WITHIN(
|
||||
LINESTRINGFROMTEXT(' LINESTRING(3 8,9 2,3 8,3 3,7 6,4 7,4 7,8 1) '),
|
||||
ST_BUFFER(MULTIPOLYGONFROMTEXT(' MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)),((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5))) '),
|
||||
ST_NUMINTERIORRINGS(POLYGONFROMTEXT('POLYGON((3 5,2 4,2 5,3 5)) '))));
|
||||
|
||||
SELECT ST_DIMENSION(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((3 5,2 5,2 4,3 4,3 5)) '),
|
||||
ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))'))));
|
||||
|
||||
SELECT ST_NUMINTERIORRINGS(
|
||||
ST_ENVELOPE(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5))) '),
|
||||
SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) ')))));
|
||||
|
||||
SELECT ASTEXT(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((9 9,5 2,4 5,9 9))'),
|
||||
SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) '))));
|
|
@ -72,6 +72,19 @@ INSERT into gis_geometry SELECT * FROM gis_multi_line;
|
|||
INSERT into gis_geometry SELECT * FROM gis_multi_polygon;
|
||||
INSERT into gis_geometry SELECT * FROM gis_geometrycollection;
|
||||
|
||||
-- disable_query_log
|
||||
-- disable_result_log
|
||||
ANALYZE TABLE gis_point;
|
||||
ANALYZE TABLE gis_line;
|
||||
ANALYZE TABLE gis_polygon;
|
||||
ANALYZE TABLE gis_multi_point;
|
||||
ANALYZE TABLE gis_multi_line;
|
||||
ANALYZE TABLE gis_multi_polygon;
|
||||
ANALYZE TABLE gis_geometrycollection;
|
||||
ANALYZE TABLE gis_geometry;
|
||||
-- enable_result_log
|
||||
-- enable_query_log
|
||||
|
||||
SELECT fid, AsText(g) FROM gis_point ORDER by fid;
|
||||
SELECT fid, AsText(g) FROM gis_line ORDER by fid;
|
||||
SELECT fid, AsText(g) FROM gis_polygon ORDER by fid;
|
||||
|
|
294
mysql-test/r/gis-debug.result
Normal file
294
mysql-test/r/gis-debug.result
Normal file
|
@ -0,0 +1,294 @@
|
|||
SET @tmp=ST_GIS_DEBUG(1);
|
||||
DROP TABLE IF EXISTS p1;
|
||||
CREATE PROCEDURE p1(dist DOUBLE, geom TEXT)
|
||||
BEGIN
|
||||
DECLARE g GEOMETRY;
|
||||
SET g=GeomFromText(geom);
|
||||
SELECT geom AS `-----`;
|
||||
SELECT dist, GeometryType(@buf:=ST_Buffer(g, dist)) AS `buffer`, ROUND(ST_AREA(@buf),2) AS buf_area;
|
||||
END|
|
||||
#
|
||||
# Testing ST_BUFFER with positive distance
|
||||
#
|
||||
-----
|
||||
POINT(0 0))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 3.14
|
||||
-----
|
||||
LineString(0 1, 1 1))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 5.14
|
||||
-----
|
||||
LineString(9 9,8 1,1 5,0 0)
|
||||
dist buffer buf_area
|
||||
1 POLYGON 44.63
|
||||
-----
|
||||
Polygon((2 2,2 8,8 8,8 2,2 2))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 63.14
|
||||
-----
|
||||
Polygon((0 0,0 8,8 8,8 0,0 0),(2 2,6 2,6 6,2 6,2 2))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 95.14
|
||||
-----
|
||||
Polygon((0 0, 0 8, 8 8, 8 10, -10 10, -10 0, 0 0))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 174.93
|
||||
-----
|
||||
MultiPoint(9 9,8 1,1 5)
|
||||
dist buffer buf_area
|
||||
1 MULTIPOLYGON 9.42
|
||||
-----
|
||||
MultiLineString((0 0,2 2))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 8.80
|
||||
-----
|
||||
MultiLineString((0 0,2 2,0 4))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 14.24
|
||||
-----
|
||||
MultiLineString((0 0,2 2),(0 2,2 0))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 13.59
|
||||
-----
|
||||
MultiLineString((2 2,2 8,-2 8),(-6 -6, 6 6),(10 10, 14 14))
|
||||
dist buffer buf_area
|
||||
1 MULTIPOLYGON 70.06
|
||||
-----
|
||||
MultiPolygon(((2 2,2 8,8 8,8 2,2 2)), ((9 9,8 1,1 5,9 9)))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 73.18
|
||||
-----
|
||||
MultiPolygon(((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)),((9 9,8 1,1 5,9 9)))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 73.18
|
||||
-----
|
||||
GeometryCollection(Point(0 0))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 3.14
|
||||
-----
|
||||
GeometryCollection(LineString(0 0, 2 2)))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 8.80
|
||||
-----
|
||||
GeometryCollection(Polygon((2 2,2 8,8 8,8 2,2 2))))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 63.14
|
||||
-----
|
||||
GeometryCollection(MultiPoint(9 9,8 1,1 5))
|
||||
dist buffer buf_area
|
||||
1 MULTIPOLYGON 9.42
|
||||
-----
|
||||
GeometryCollection(MultiLineString((0 0,0 1),(3 0,3 1)))
|
||||
dist buffer buf_area
|
||||
1 MULTIPOLYGON 10.28
|
||||
-----
|
||||
GeometryCollection(MultiPolygon(((0 0, 3 0, 3 3, 0 3, 0 0)),((6 6,6 9,9 9,9 6,6 6))))
|
||||
dist buffer buf_area
|
||||
1 MULTIPOLYGON 48.28
|
||||
-----
|
||||
GeometryCollection(Point(9 9),LineString(1 5,0 0),Polygon((2 2,2 8,8 8,8 2,2 2)))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 75.92
|
||||
#
|
||||
# Testing ST_BUFFER with zero distance
|
||||
#
|
||||
-----
|
||||
POINT(0 0))
|
||||
dist buffer buf_area
|
||||
0 POINT 0.00
|
||||
-----
|
||||
LineString(0 1, 1 1))
|
||||
dist buffer buf_area
|
||||
0 LINESTRING 0.00
|
||||
-----
|
||||
LineString(9 9,8 1,1 5,0 0)
|
||||
dist buffer buf_area
|
||||
0 LINESTRING 0.00
|
||||
-----
|
||||
Polygon((2 2,2 8,8 8,8 2,2 2))
|
||||
dist buffer buf_area
|
||||
0 POLYGON 36.00
|
||||
-----
|
||||
Polygon((0 0,0 8,8 8,8 0,0 0),(2 2,6 2,6 6,2 6,2 2))
|
||||
dist buffer buf_area
|
||||
0 POLYGON 48.00
|
||||
-----
|
||||
Polygon((0 0, 0 8, 8 8, 8 10, -10 10, -10 0, 0 0))
|
||||
dist buffer buf_area
|
||||
0 POLYGON 116.00
|
||||
-----
|
||||
MultiPoint(9 9,8 1,1 5)
|
||||
dist buffer buf_area
|
||||
0 MULTIPOINT NULL
|
||||
-----
|
||||
MultiLineString((0 0,2 2))
|
||||
dist buffer buf_area
|
||||
0 MULTILINESTRING NULL
|
||||
-----
|
||||
MultiLineString((0 0,2 2,0 4))
|
||||
dist buffer buf_area
|
||||
0 MULTILINESTRING NULL
|
||||
-----
|
||||
MultiLineString((0 0,2 2),(0 2,2 0))
|
||||
dist buffer buf_area
|
||||
0 MULTILINESTRING NULL
|
||||
-----
|
||||
MultiLineString((2 2,2 8,-2 8),(-6 -6, 6 6),(10 10, 14 14))
|
||||
dist buffer buf_area
|
||||
0 MULTILINESTRING NULL
|
||||
-----
|
||||
MultiPolygon(((2 2,2 8,8 8,8 2,2 2)), ((9 9,8 1,1 5,9 9)))
|
||||
dist buffer buf_area
|
||||
0 MULTIPOLYGON 66.00
|
||||
-----
|
||||
MultiPolygon(((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)),((9 9,8 1,1 5,9 9)))
|
||||
dist buffer buf_area
|
||||
0 MULTIPOLYGON 62.00
|
||||
-----
|
||||
GeometryCollection(Point(0 0))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(LineString(0 0, 2 2)))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(Polygon((2 2,2 8,8 8,8 2,2 2))))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION 36.00
|
||||
-----
|
||||
GeometryCollection(MultiPoint(9 9,8 1,1 5))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION NULL
|
||||
-----
|
||||
GeometryCollection(MultiLineString((0 0,0 1),(3 0,3 1)))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION NULL
|
||||
-----
|
||||
GeometryCollection(MultiPolygon(((0 0, 3 0, 3 3, 0 3, 0 0)),((6 6,6 9,9 9,9 6,6 6))))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION 18.00
|
||||
-----
|
||||
GeometryCollection(Point(9 9),LineString(1 5,0 0),Polygon((2 2,2 8,8 8,8 2,2 2)))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION 36.00
|
||||
#
|
||||
# Testing ST_BUFFER with negative distance
|
||||
#
|
||||
-----
|
||||
POINT(0 0))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
LineString(0 1, 1 1))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
LineString(9 9,8 1,1 5,0 0)
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
Polygon((2 2,2 8,8 8,8 2,2 2))
|
||||
dist buffer buf_area
|
||||
-1 POLYGON 16.00
|
||||
-----
|
||||
MultiPoint(9 9,8 1,1 5)
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
MultiLineString((0 0,2 2))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
MultiLineString((0 0,2 2,0 4))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
MultiLineString((0 0,2 2),(0 2,2 0))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
MultiLineString((2 2,2 8,-2 8),(-6 -6, 6 6),(10 10, 14 14))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(Point(0 0))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(LineString(0 0, 2 2)))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(Polygon((2 2,2 8,8 8,8 2,2 2))))
|
||||
dist buffer buf_area
|
||||
-1 POLYGON 16.00
|
||||
-----
|
||||
GeometryCollection(MultiPoint(9 9,8 1,1 5))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(MultiLineString((0 0,0 1),(3 0,3 1)))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(Point(9 9),LineString(1 5,0 0),Polygon((2 2,2 8,8 8,8 2,2 2)))
|
||||
dist buffer buf_area
|
||||
-1 POLYGON 16.00
|
||||
SELECT ST_CONTAINS(
|
||||
GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'),
|
||||
GeomFromText('POINT(5 10)'));
|
||||
ST_CONTAINS(
|
||||
GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'),
|
||||
GeomFromText('POINT(5 10)'))
|
||||
0
|
||||
SELECT AsText(ST_UNION(
|
||||
GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'),
|
||||
GeomFromText('POINT(5 10)')));
|
||||
AsText(ST_UNION(
|
||||
GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'),
|
||||
GeomFromText('POINT(5 10)')))
|
||||
GEOMETRYCOLLECTION(POLYGON((0 0,0 5,5 5,5 0,0 0)),POLYGON((6 6,6 11,11 11,11 6,6 6)),POINT(5 10))
|
||||
DROP PROCEDURE p1;
|
||||
#
|
||||
# Bug #13833019 ASSERTION `T1->RESULT_RANGE' FAILED IN GCALC_OPERATION_REDUCER::END_COUPLE
|
||||
#
|
||||
SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3));
|
||||
GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3))
|
||||
POLYGON
|
||||
#
|
||||
# Bug #13832749 HANDLE_FATAL_SIGNAL IN GCALC_FUNCTION::COUNT_INTERNAL
|
||||
#
|
||||
SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1));
|
||||
GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1))
|
||||
POLYGON
|
||||
#
|
||||
# Bug#13358363 - ASSERTION: N > 0 && N < SINUSES_CALCULATED*2+1 | GET_N_SINCOS/ADD_EDGE_BUFFER
|
||||
#
|
||||
DO ST_BUFFER(ST_GEOMCOLLFROMTEXT('linestring(1 1,2 2)'),'');
|
||||
SELECT ST_WITHIN(
|
||||
LINESTRINGFROMTEXT(' LINESTRING(3 8,9 2,3 8,3 3,7 6,4 7,4 7,8 1) '),
|
||||
ST_BUFFER(MULTIPOLYGONFROMTEXT(' MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)),((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5))) '),
|
||||
ST_NUMINTERIORRINGS(POLYGONFROMTEXT('POLYGON((3 5,2 4,2 5,3 5)) '))));
|
||||
ST_WITHIN(
|
||||
LINESTRINGFROMTEXT(' LINESTRING(3 8,9 2,3 8,3 3,7 6,4 7,4 7,8 1) '),
|
||||
ST_BUFFER(MULTIPOLYGONFROMTEXT(' MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)),((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5))) ')
|
||||
0
|
||||
SELECT ST_DIMENSION(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((3 5,2 5,2 4,3 4,3 5)) '),
|
||||
ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))'))));
|
||||
ST_DIMENSION(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((3 5,2 5,2 4,3 4,3 5)) '),
|
||||
ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))'))))
|
||||
2
|
||||
SELECT ST_NUMINTERIORRINGS(
|
||||
ST_ENVELOPE(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5))) '),
|
||||
SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) ')))));
|
||||
ST_NUMINTERIORRINGS(
|
||||
ST_ENVELOPE(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5))) '),
|
||||
SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) ')))))
|
||||
0
|
||||
SELECT ASTEXT(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((9 9,5 2,4 5,9 9))'),
|
||||
SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) '))));
|
||||
ASTEXT(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((9 9,5 2,4 5,9 9))'),
|
||||
SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) '))))
|
||||
POLYGON((9 9,5 2,4 5,9 9))
|
|
@ -200,6 +200,31 @@ result
|
|||
SELECT ST_Equals(PointFromText('POINT (12 13)'),PointFromText('POINT (12 13)')) as result;
|
||||
result
|
||||
1
|
||||
#
|
||||
# BUG#11755628/47429: INTERSECTION FUNCTION CRASHED MYSQLD
|
||||
# BUG#11759650/51979: UNION/INTERSECTION OF POLYGONS CRASHES MYSQL
|
||||
#
|
||||
SELECT ASTEXT(ST_UNION(GEOMFROMTEXT('POLYGON((525000 183300,525400
|
||||
183300,525400 18370, 525000 183700,525000 183300))'),
|
||||
geomfromtext('POLYGON((525298.67 183511.53,525296.57
|
||||
183510.39,525296.42 183510.31,525289.11 183506.62,525283.17
|
||||
183503.47,525280.98 183502.26,525278.63 183500.97,525278.39
|
||||
183500.84,525276.79 183500,525260.7 183491.55,525263.95
|
||||
183484.75,525265.58 183481.95,525278.97 183488.73,525276.5
|
||||
183493.45,525275.5 183495.7,525280.35 183498.2,525282.3
|
||||
183499.1,525282.2 183499.3,525283.55 183500,525301.75
|
||||
183509.35,525304.45 183504.25,525307.85 183504.95,525304.5
|
||||
183510.83,525302.81 183513.8,525298.67 183511.53),(525275.06
|
||||
183489.89,525272.06 183488.37,525268.94 183494.51,525271.94
|
||||
183496.03,525275.06 183489.89),(525263.26 183491.55,525266.15
|
||||
183493.04,525269.88 183485.82,525266.99 183484.33,525263.26
|
||||
183491.55))'))) st_u;
|
||||
st_u
|
||||
MULTIPOLYGON(((525400 18370,525000.9677614468 183300,525400 183300,525400 18370)),((525000 183300,525000 183700,525000.9677614468 183300,525000 183300)),((525265.58 183481.95,525263.95 183484.75,525260.7 183491.55,525276.79 183500,525278.39 183500.84,525278.63 183500.97,525280.98 183502.26,525283.17 183503.47,525289.11 183506.62,525296.42 183510.31,525296.57 183510.39,525298.67 183511.53,525302.81 183513.8,525304.5 183510.83,525307.85 183504.95,525304.45 183504.25,525301.75 183509.35,525283.55 183500,525282.2 183499.3,525282.3 183499.1,525280.35 183498.2,525275.5 183495.7,525276.5 183493.45,525278.97 183488.73,525265.58 183481.95),(525266.99 183484.33,525263.26 183491.55,525266.15 183493.04,525269.88 183485.82,525266.99 183484.33),(525272.06 183488.37,525268.94 183494.51,525271.94 183496.03,525275.06 183489.89,525272.06 183488.37)))
|
||||
SET @a=0x0000000001030000000200000005000000000000000000000000000000000000000000000000002440000000000000000000000000000024400000000000002440000000000000000000000000000024400000000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000F03F00000000000000400000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F03F;
|
||||
SELECT ASTEXT(TOUCHES(@a, GEOMFROMTEXT('point(0 0)'))) t;
|
||||
t
|
||||
NULL
|
||||
SELECT astext(ST_UNION (
|
||||
PolyFromText('POLYGON(( 2 2 ,3 2,2 7,2 2),( 0 0,8 2,1 9,0 0))'),
|
||||
ExteriorRing( Envelope( MultiLineStringFromText('MULTILINESTRING((3 4,5 3),(3 0,0 5))')))));
|
||||
|
@ -455,3 +480,296 @@ ST_NUMPOINTS(ST_EXTERIORRING(ST_BUFFER( POLYGONFROMTEXT( 'POLYGON( ( 0.0 -3.0,
|
|||
select astext(buffer(st_linestringfromwkb(linestring(point(-1,1), point(-1,-2))),-1));
|
||||
astext(buffer(st_linestringfromwkb(linestring(point(-1,1), point(-1,-2))),-1))
|
||||
GEOMETRYCOLLECTION EMPTY
|
||||
DROP TABLE IF EXISTS p1;
|
||||
CREATE PROCEDURE p1(dist DOUBLE, geom TEXT)
|
||||
BEGIN
|
||||
DECLARE g GEOMETRY;
|
||||
SET g=GeomFromText(geom);
|
||||
SELECT geom AS `-----`;
|
||||
SELECT dist, GeometryType(@buf:=ST_Buffer(g, dist)) AS `buffer`, ROUND(ST_AREA(@buf),2) AS buf_area;
|
||||
END|
|
||||
#
|
||||
# Testing ST_BUFFER with positive distance
|
||||
#
|
||||
-----
|
||||
POINT(0 0))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 3.14
|
||||
-----
|
||||
LineString(0 1, 1 1))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 5.14
|
||||
-----
|
||||
LineString(9 9,8 1,1 5,0 0)
|
||||
dist buffer buf_area
|
||||
1 POLYGON 44.63
|
||||
-----
|
||||
Polygon((2 2,2 8,8 8,8 2,2 2))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 63.14
|
||||
-----
|
||||
Polygon((0 0,0 8,8 8,8 0,0 0),(2 2,6 2,6 6,2 6,2 2))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 95.14
|
||||
-----
|
||||
Polygon((0 0, 0 8, 8 8, 8 10, -10 10, -10 0, 0 0))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 174.93
|
||||
-----
|
||||
MultiPoint(9 9,8 1,1 5)
|
||||
dist buffer buf_area
|
||||
1 MULTIPOLYGON 9.42
|
||||
-----
|
||||
MultiLineString((0 0,2 2))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 8.80
|
||||
-----
|
||||
MultiLineString((0 0,2 2,0 4))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 14.24
|
||||
-----
|
||||
MultiLineString((0 0,2 2),(0 2,2 0))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 13.59
|
||||
-----
|
||||
MultiLineString((2 2,2 8,-2 8),(-6 -6, 6 6),(10 10, 14 14))
|
||||
dist buffer buf_area
|
||||
1 MULTIPOLYGON 70.06
|
||||
-----
|
||||
MultiPolygon(((2 2,2 8,8 8,8 2,2 2)), ((9 9,8 1,1 5,9 9)))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 73.18
|
||||
-----
|
||||
MultiPolygon(((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)),((9 9,8 1,1 5,9 9)))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 73.18
|
||||
-----
|
||||
GeometryCollection(Point(0 0))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 3.14
|
||||
-----
|
||||
GeometryCollection(LineString(0 0, 2 2)))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 8.80
|
||||
-----
|
||||
GeometryCollection(Polygon((2 2,2 8,8 8,8 2,2 2))))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 63.14
|
||||
-----
|
||||
GeometryCollection(MultiPoint(9 9,8 1,1 5))
|
||||
dist buffer buf_area
|
||||
1 MULTIPOLYGON 9.42
|
||||
-----
|
||||
GeometryCollection(MultiLineString((0 0,0 1),(3 0,3 1)))
|
||||
dist buffer buf_area
|
||||
1 MULTIPOLYGON 10.28
|
||||
-----
|
||||
GeometryCollection(MultiPolygon(((0 0, 3 0, 3 3, 0 3, 0 0)),((6 6,6 9,9 9,9 6,6 6))))
|
||||
dist buffer buf_area
|
||||
1 MULTIPOLYGON 48.28
|
||||
-----
|
||||
GeometryCollection(Point(9 9),LineString(1 5,0 0),Polygon((2 2,2 8,8 8,8 2,2 2)))
|
||||
dist buffer buf_area
|
||||
1 POLYGON 75.92
|
||||
#
|
||||
# Testing ST_BUFFER with zero distance
|
||||
#
|
||||
-----
|
||||
POINT(0 0))
|
||||
dist buffer buf_area
|
||||
0 POINT 0.00
|
||||
-----
|
||||
LineString(0 1, 1 1))
|
||||
dist buffer buf_area
|
||||
0 LINESTRING 0.00
|
||||
-----
|
||||
LineString(9 9,8 1,1 5,0 0)
|
||||
dist buffer buf_area
|
||||
0 LINESTRING 0.00
|
||||
-----
|
||||
Polygon((2 2,2 8,8 8,8 2,2 2))
|
||||
dist buffer buf_area
|
||||
0 POLYGON 36.00
|
||||
-----
|
||||
Polygon((0 0,0 8,8 8,8 0,0 0),(2 2,6 2,6 6,2 6,2 2))
|
||||
dist buffer buf_area
|
||||
0 POLYGON 48.00
|
||||
-----
|
||||
Polygon((0 0, 0 8, 8 8, 8 10, -10 10, -10 0, 0 0))
|
||||
dist buffer buf_area
|
||||
0 POLYGON 116.00
|
||||
-----
|
||||
MultiPoint(9 9,8 1,1 5)
|
||||
dist buffer buf_area
|
||||
0 MULTIPOINT NULL
|
||||
-----
|
||||
MultiLineString((0 0,2 2))
|
||||
dist buffer buf_area
|
||||
0 MULTILINESTRING NULL
|
||||
-----
|
||||
MultiLineString((0 0,2 2,0 4))
|
||||
dist buffer buf_area
|
||||
0 MULTILINESTRING NULL
|
||||
-----
|
||||
MultiLineString((0 0,2 2),(0 2,2 0))
|
||||
dist buffer buf_area
|
||||
0 MULTILINESTRING NULL
|
||||
-----
|
||||
MultiLineString((2 2,2 8,-2 8),(-6 -6, 6 6),(10 10, 14 14))
|
||||
dist buffer buf_area
|
||||
0 MULTILINESTRING NULL
|
||||
-----
|
||||
MultiPolygon(((2 2,2 8,8 8,8 2,2 2)), ((9 9,8 1,1 5,9 9)))
|
||||
dist buffer buf_area
|
||||
0 MULTIPOLYGON 66.00
|
||||
-----
|
||||
MultiPolygon(((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)),((9 9,8 1,1 5,9 9)))
|
||||
dist buffer buf_area
|
||||
0 MULTIPOLYGON 62.00
|
||||
-----
|
||||
GeometryCollection(Point(0 0))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(LineString(0 0, 2 2)))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(Polygon((2 2,2 8,8 8,8 2,2 2))))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION 36.00
|
||||
-----
|
||||
GeometryCollection(MultiPoint(9 9,8 1,1 5))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION NULL
|
||||
-----
|
||||
GeometryCollection(MultiLineString((0 0,0 1),(3 0,3 1)))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION NULL
|
||||
-----
|
||||
GeometryCollection(MultiPolygon(((0 0, 3 0, 3 3, 0 3, 0 0)),((6 6,6 9,9 9,9 6,6 6))))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION 18.00
|
||||
-----
|
||||
GeometryCollection(Point(9 9),LineString(1 5,0 0),Polygon((2 2,2 8,8 8,8 2,2 2)))
|
||||
dist buffer buf_area
|
||||
0 GEOMETRYCOLLECTION 36.00
|
||||
#
|
||||
# Testing ST_BUFFER with negative distance
|
||||
#
|
||||
-----
|
||||
POINT(0 0))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
LineString(0 1, 1 1))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
LineString(9 9,8 1,1 5,0 0)
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
Polygon((2 2,2 8,8 8,8 2,2 2))
|
||||
dist buffer buf_area
|
||||
-1 POLYGON 16.00
|
||||
-----
|
||||
MultiPoint(9 9,8 1,1 5)
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
MultiLineString((0 0,2 2))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
MultiLineString((0 0,2 2,0 4))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
MultiLineString((0 0,2 2),(0 2,2 0))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
MultiLineString((2 2,2 8,-2 8),(-6 -6, 6 6),(10 10, 14 14))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(Point(0 0))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(LineString(0 0, 2 2)))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(Polygon((2 2,2 8,8 8,8 2,2 2))))
|
||||
dist buffer buf_area
|
||||
-1 POLYGON 16.00
|
||||
-----
|
||||
GeometryCollection(MultiPoint(9 9,8 1,1 5))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(MultiLineString((0 0,0 1),(3 0,3 1)))
|
||||
dist buffer buf_area
|
||||
-1 GEOMETRYCOLLECTION 0.00
|
||||
-----
|
||||
GeometryCollection(Point(9 9),LineString(1 5,0 0),Polygon((2 2,2 8,8 8,8 2,2 2)))
|
||||
dist buffer buf_area
|
||||
-1 POLYGON 16.00
|
||||
SELECT ST_CONTAINS(
|
||||
GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'),
|
||||
GeomFromText('POINT(5 10)'));
|
||||
ST_CONTAINS(
|
||||
GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'),
|
||||
GeomFromText('POINT(5 10)'))
|
||||
0
|
||||
SELECT AsText(ST_UNION(
|
||||
GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'),
|
||||
GeomFromText('POINT(5 10)')));
|
||||
AsText(ST_UNION(
|
||||
GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'),
|
||||
GeomFromText('POINT(5 10)')))
|
||||
GEOMETRYCOLLECTION(POLYGON((0 0,0 5,5 5,5 0,0 0)),POLYGON((6 6,6 11,11 11,11 6,6 6)),POINT(5 10))
|
||||
DROP PROCEDURE p1;
|
||||
#
|
||||
# Bug #13833019 ASSERTION `T1->RESULT_RANGE' FAILED IN GCALC_OPERATION_REDUCER::END_COUPLE
|
||||
#
|
||||
SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3));
|
||||
GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3))
|
||||
POLYGON
|
||||
#
|
||||
# Bug #13832749 HANDLE_FATAL_SIGNAL IN GCALC_FUNCTION::COUNT_INTERNAL
|
||||
#
|
||||
SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1));
|
||||
GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1))
|
||||
POLYGON
|
||||
#
|
||||
# Bug#13358363 - ASSERTION: N > 0 && N < SINUSES_CALCULATED*2+1 | GET_N_SINCOS/ADD_EDGE_BUFFER
|
||||
#
|
||||
DO ST_BUFFER(ST_GEOMCOLLFROMTEXT('linestring(1 1,2 2)'),'');
|
||||
SELECT ST_WITHIN(
|
||||
LINESTRINGFROMTEXT(' LINESTRING(3 8,9 2,3 8,3 3,7 6,4 7,4 7,8 1) '),
|
||||
ST_BUFFER(MULTIPOLYGONFROMTEXT(' MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)),((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5))) '),
|
||||
ST_NUMINTERIORRINGS(POLYGONFROMTEXT('POLYGON((3 5,2 4,2 5,3 5)) '))));
|
||||
ST_WITHIN(
|
||||
LINESTRINGFROMTEXT(' LINESTRING(3 8,9 2,3 8,3 3,7 6,4 7,4 7,8 1) '),
|
||||
ST_BUFFER(MULTIPOLYGONFROMTEXT(' MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)),((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5))) ')
|
||||
0
|
||||
SELECT ST_DIMENSION(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((3 5,2 5,2 4,3 4,3 5)) '),
|
||||
ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))'))));
|
||||
ST_DIMENSION(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((3 5,2 5,2 4,3 4,3 5)) '),
|
||||
ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))'))))
|
||||
2
|
||||
SELECT ST_NUMINTERIORRINGS(
|
||||
ST_ENVELOPE(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5))) '),
|
||||
SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) ')))));
|
||||
ST_NUMINTERIORRINGS(
|
||||
ST_ENVELOPE(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5))) '),
|
||||
SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) ')))))
|
||||
0
|
||||
SELECT ASTEXT(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((9 9,5 2,4 5,9 9))'),
|
||||
SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) '))));
|
||||
ASTEXT(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((9 9,5 2,4 5,9 9))'),
|
||||
SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) '))))
|
||||
POLYGON((9 9,5 2,4 5,9 9))
|
||||
|
|
|
@ -834,6 +834,17 @@ create table t1 (g geometry not null);
|
|||
insert into t1 values(default);
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a GEOMETRY);
|
||||
CREATE VIEW v1 AS SELECT GeomFromwkb(ASBINARY(a)) FROM t1;
|
||||
CREATE VIEW v2 AS SELECT a FROM t1;
|
||||
DESCRIBE v1;
|
||||
Field Type Null Key Default Extra
|
||||
GeomFromwkb(ASBINARY(a)) geometry YES NULL
|
||||
DESCRIBE v2;
|
||||
Field Type Null Key Default Extra
|
||||
a geometry YES NULL
|
||||
DROP VIEW v1,v2;
|
||||
DROP TABLE t1;
|
||||
create table t1 (name VARCHAR(100), square GEOMETRY);
|
||||
INSERT INTO t1 VALUES("center", GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))'));
|
||||
INSERT INTO t1 VALUES("small", GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))'));
|
||||
|
|
6
mysql-test/t/gis-debug.test
Normal file
6
mysql-test/t/gis-debug.test
Normal file
|
@ -0,0 +1,6 @@
|
|||
--source include/have_geometry.inc
|
||||
--source include/have_debug.inc
|
||||
|
||||
SET @tmp=ST_GIS_DEBUG(1);
|
||||
|
||||
--source include/gis_debug.inc
|
|
@ -108,6 +108,32 @@ SELECT ST_Equals(PolyFromText('POLYGON((67 13, 67 18, 67 18, 59 18, 59 13, 67 13
|
|||
SELECT ST_Equals(PolyFromText('POLYGON((67 13, 67 18, 67 18, 59 18, 59 13, 67 13) )'),PolyFromText('POLYGON((67 13, 67 18, 59 18, 59 13, 59 13, 67 13) )')) as result;
|
||||
SELECT ST_Equals(PointFromText('POINT (12 13)'),PointFromText('POINT (12 13)')) as result;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # BUG#11755628/47429: INTERSECTION FUNCTION CRASHED MYSQLD
|
||||
--echo # BUG#11759650/51979: UNION/INTERSECTION OF POLYGONS CRASHES MYSQL
|
||||
--echo #
|
||||
|
||||
SELECT ASTEXT(ST_UNION(GEOMFROMTEXT('POLYGON((525000 183300,525400
|
||||
183300,525400 18370, 525000 183700,525000 183300))'),
|
||||
geomfromtext('POLYGON((525298.67 183511.53,525296.57
|
||||
183510.39,525296.42 183510.31,525289.11 183506.62,525283.17
|
||||
183503.47,525280.98 183502.26,525278.63 183500.97,525278.39
|
||||
183500.84,525276.79 183500,525260.7 183491.55,525263.95
|
||||
183484.75,525265.58 183481.95,525278.97 183488.73,525276.5
|
||||
183493.45,525275.5 183495.7,525280.35 183498.2,525282.3
|
||||
183499.1,525282.2 183499.3,525283.55 183500,525301.75
|
||||
183509.35,525304.45 183504.25,525307.85 183504.95,525304.5
|
||||
183510.83,525302.81 183513.8,525298.67 183511.53),(525275.06
|
||||
183489.89,525272.06 183488.37,525268.94 183494.51,525271.94
|
||||
183496.03,525275.06 183489.89),(525263.26 183491.55,525266.15
|
||||
183493.04,525269.88 183485.82,525266.99 183484.33,525263.26
|
||||
183491.55))'))) st_u;
|
||||
|
||||
SET @a=0x0000000001030000000200000005000000000000000000000000000000000000000000000000002440000000000000000000000000000024400000000000002440000000000000000000000000000024400000000000000000000000000000000000000000000000000000F03F000000000000F03F0000000000000040000000000000F03F00000000000000400000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F03F;
|
||||
SELECT ASTEXT(TOUCHES(@a, GEOMFROMTEXT('point(0 0)'))) t;
|
||||
|
||||
|
||||
# bug #801243 Assertion `(0)' failed in Gis_geometry_collection::init_from_opresult on ST_UNION
|
||||
|
||||
SELECT astext(ST_UNION (
|
||||
|
@ -328,3 +354,5 @@ SELECT ST_NUMPOINTS(ST_EXTERIORRING(ST_BUFFER( POLYGONFROMTEXT( 'POLYGON( ( 0.0
|
|||
# MDEV-5615 crash in Gcalc_function::add_operation
|
||||
select astext(buffer(st_linestringfromwkb(linestring(point(-1,1), point(-1,-2))),-1));
|
||||
|
||||
--source include/gis_debug.inc
|
||||
|
||||
|
|
|
@ -540,6 +540,18 @@ create table t1 (g geometry not null);
|
|||
insert into t1 values(default);
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #27300: create view with geometry functions lost columns types
|
||||
#
|
||||
CREATE TABLE t1 (a GEOMETRY);
|
||||
CREATE VIEW v1 AS SELECT GeomFromwkb(ASBINARY(a)) FROM t1;
|
||||
CREATE VIEW v2 AS SELECT a FROM t1;
|
||||
DESCRIBE v1;
|
||||
DESCRIBE v2;
|
||||
|
||||
DROP VIEW v1,v2;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#24563: MBROverlaps does not seem to function propertly
|
||||
# Bug#54888: MBROverlaps missing in 5.1?
|
||||
|
|
|
@ -1264,6 +1264,21 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
#if defined(HAVE_SPATIAL) && !defined(DBUG_OFF)
|
||||
class Create_func_gis_debug : public Create_func_arg1
|
||||
{
|
||||
public:
|
||||
virtual Item *create_1_arg(THD *thd, Item *arg1);
|
||||
|
||||
static Create_func_gis_debug s_singleton;
|
||||
|
||||
protected:
|
||||
Create_func_gis_debug() {}
|
||||
virtual ~Create_func_gis_debug() {}
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef HAVE_SPATIAL
|
||||
class Create_func_glength : public Create_func_arg1
|
||||
{
|
||||
|
@ -4159,6 +4174,17 @@ Create_func_get_lock::create_2_arg(THD *thd, Item *arg1, Item *arg2)
|
|||
}
|
||||
|
||||
|
||||
#if defined(HAVE_SPATIAL) && !defined(DBUG_OFF)
|
||||
Create_func_gis_debug Create_func_gis_debug::s_singleton;
|
||||
|
||||
Item*
|
||||
Create_func_gis_debug::create_1_arg(THD *thd, Item *arg1)
|
||||
{
|
||||
return new (thd->mem_root) Item_func_gis_debug(arg1);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef HAVE_SPATIAL
|
||||
Create_func_glength Create_func_glength::s_singleton;
|
||||
|
||||
|
@ -5854,6 +5880,9 @@ static Native_func_registry func_array[] =
|
|||
{ { C_STRING_WITH_LEN("ST_GEOMETRYTYPE") }, GEOM_BUILDER(Create_func_geometry_type)},
|
||||
{ { C_STRING_WITH_LEN("ST_GEOMFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
|
||||
{ { C_STRING_WITH_LEN("ST_GEOMFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
|
||||
#ifndef DBUG_OFF
|
||||
{ { C_STRING_WITH_LEN("ST_GIS_DEBUG") }, GEOM_BUILDER(Create_func_gis_debug)},
|
||||
#endif
|
||||
{ { C_STRING_WITH_LEN("ST_EQUALS") }, GEOM_BUILDER(Create_func_equals)},
|
||||
{ { C_STRING_WITH_LEN("ST_INTERIORRINGN") }, GEOM_BUILDER(Create_func_interiorringn)},
|
||||
{ { C_STRING_WITH_LEN("ST_INTERSECTS") }, GEOM_BUILDER(Create_func_intersects)},
|
||||
|
|
|
@ -1739,4 +1739,12 @@ mem_error:
|
|||
}
|
||||
|
||||
|
||||
#ifndef DBUG_OFF
|
||||
longlong Item_func_gis_debug::val_int()
|
||||
{
|
||||
/* For now this is just a stub. TODO: implement the internal GIS debuggign */
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*HAVE_SPATIAL*/
|
||||
|
|
|
@ -496,6 +496,18 @@ public:
|
|||
const char *func_name() const { return "st_distance"; }
|
||||
};
|
||||
|
||||
|
||||
#ifndef DBUG_OFF
|
||||
class Item_func_gis_debug: public Item_int_func
|
||||
{
|
||||
public:
|
||||
Item_func_gis_debug(Item *a) :Item_int_func(a) { null_value= false; }
|
||||
const char *func_name() const { return "st_gis_debug"; }
|
||||
longlong val_int();
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
#define GEOM_NEW(thd, obj_constructor) new (thd->mem_root) obj_constructor
|
||||
|
||||
#else /*HAVE_SPATIAL*/
|
||||
|
|
Loading…
Reference in a new issue