Skip to content

Commit 4e77d3d

Browse files
author
Alexander Barkov
committed
Bug#13833019
Bug#13832749 Adding files forgotten in the previous push.
1 parent 4e98eee commit 4e77d3d

File tree

3 files changed

+638
-0
lines changed

3 files changed

+638
-0
lines changed

mysql-test/include/gis_debug.inc

+139
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
#
2+
# This is a shared file included from t/gis-precise.test and t/gis-debug.test
3+
#
4+
# - gis-precise.test is executed both in debug and production builds
5+
# and makes sure that the checked GIS functions return the expected results.
6+
#
7+
# - gis-debug.test is executed only in debug builds
8+
# (and is skipped in production builds).
9+
# gis-debug.test activates tracing of the internal GIS routines.
10+
# The trace log is printed to the client side warnings.
11+
# So gis-debug.test makes sure not only that the correct results are returned,
12+
# but also check *how* these results were generated - makes sure that
13+
# the internal GIS routines went through the expected data and code flow paths.
14+
#
15+
16+
--disable_warnings
17+
DROP TABLE IF EXISTS p1;
18+
--enable_warnings
19+
20+
DELIMITER |;
21+
CREATE PROCEDURE p1(dist DOUBLE, geom TEXT)
22+
BEGIN
23+
DECLARE g GEOMETRY;
24+
SET g=GeomFromText(geom);
25+
SELECT geom AS `-----`;
26+
SELECT dist, GeometryType(@buf:=ST_Buffer(g, dist)) AS `buffer`, ROUND(ST_AREA(@buf),2) AS buf_area;
27+
END|
28+
DELIMITER ;|
29+
30+
--disable_query_log
31+
32+
--echo #
33+
--echo # Testing ST_BUFFER with positive distance
34+
--echo #
35+
36+
CALL p1(1, 'POINT(0 0))');
37+
CALL p1(1, 'LineString(0 1, 1 1))');
38+
CALL p1(1, 'LineString(9 9,8 1,1 5,0 0)');
39+
CALL p1(1, 'Polygon((2 2,2 8,8 8,8 2,2 2))');
40+
CALL p1(1, 'Polygon((0 0,0 8,8 8,8 0,0 0),(2 2,6 2,6 6,2 6,2 2))');
41+
CALL p1(1, 'Polygon((0 0, 0 8, 8 8, 8 10, -10 10, -10 0, 0 0))');
42+
CALL p1(1, 'MultiPoint(9 9,8 1,1 5)');
43+
CALL p1(1, 'MultiLineString((0 0,2 2))');
44+
CALL p1(1, 'MultiLineString((0 0,2 2,0 4))');
45+
CALL p1(1, 'MultiLineString((0 0,2 2),(0 2,2 0))');
46+
CALL p1(1, 'MultiLineString((2 2,2 8,-2 8),(-6 -6, 6 6),(10 10, 14 14))');
47+
CALL p1(1, 'MultiPolygon(((2 2,2 8,8 8,8 2,2 2)), ((9 9,8 1,1 5,9 9)))');
48+
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)))');
49+
CALL p1(1, 'GeometryCollection(Point(0 0))');
50+
CALL p1(1, 'GeometryCollection(LineString(0 0, 2 2)))');
51+
CALL p1(1, 'GeometryCollection(Polygon((2 2,2 8,8 8,8 2,2 2))))');
52+
CALL p1(1, 'GeometryCollection(MultiPoint(9 9,8 1,1 5))');
53+
CALL p1(1, 'GeometryCollection(MultiLineString((0 0,0 1),(3 0,3 1)))');
54+
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))))');
55+
CALL p1(1, 'GeometryCollection(Point(9 9),LineString(1 5,0 0),Polygon((2 2,2 8,8 8,8 2,2 2)))');
56+
57+
58+
--echo #
59+
--echo # Testing ST_BUFFER with zero distance
60+
--echo #
61+
62+
CALL p1(0, 'POINT(0 0))');
63+
CALL p1(0, 'LineString(0 1, 1 1))');
64+
CALL p1(0, 'LineString(9 9,8 1,1 5,0 0)');
65+
CALL p1(0, 'Polygon((2 2,2 8,8 8,8 2,2 2))');
66+
CALL p1(0, 'Polygon((0 0,0 8,8 8,8 0,0 0),(2 2,6 2,6 6,2 6,2 2))');
67+
CALL p1(0, 'Polygon((0 0, 0 8, 8 8, 8 10, -10 10, -10 0, 0 0))');
68+
CALL p1(0, 'MultiPoint(9 9,8 1,1 5)');
69+
CALL p1(0, 'MultiLineString((0 0,2 2))');
70+
CALL p1(0, 'MultiLineString((0 0,2 2,0 4))');
71+
CALL p1(0, 'MultiLineString((0 0,2 2),(0 2,2 0))');
72+
CALL p1(0, 'MultiLineString((2 2,2 8,-2 8),(-6 -6, 6 6),(10 10, 14 14))');
73+
CALL p1(0, 'MultiPolygon(((2 2,2 8,8 8,8 2,2 2)), ((9 9,8 1,1 5,9 9)))');
74+
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)))');
75+
CALL p1(0, 'GeometryCollection(Point(0 0))');
76+
CALL p1(0, 'GeometryCollection(LineString(0 0, 2 2)))');
77+
CALL p1(0, 'GeometryCollection(Polygon((2 2,2 8,8 8,8 2,2 2))))');
78+
CALL p1(0, 'GeometryCollection(MultiPoint(9 9,8 1,1 5))');
79+
CALL p1(0, 'GeometryCollection(MultiLineString((0 0,0 1),(3 0,3 1)))');
80+
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))))');
81+
CALL p1(0, 'GeometryCollection(Point(9 9),LineString(1 5,0 0),Polygon((2 2,2 8,8 8,8 2,2 2)))');
82+
83+
84+
--echo #
85+
--echo # Testing ST_BUFFER with negative distance
86+
--echo #
87+
88+
CALL p1(-1, 'POINT(0 0))');
89+
CALL p1(-1, 'LineString(0 1, 1 1))');
90+
CALL p1(-1, 'LineString(9 9,8 1,1 5,0 0)');
91+
CALL p1(-1, 'Polygon((2 2,2 8,8 8,8 2,2 2))');
92+
#
93+
# Wrong shape
94+
# CALL p1(-1, 'Polygon((0 0,0 8,8 8,8 0,0 0),(2 2,6 2,6 6,2 6,2 2))');
95+
# Wrong shape
96+
# CALL p1(-1, 'Polygon((0 0, 0 8, 8 8, 8 10, -10 10, -10 0, 0 0))');
97+
#
98+
CALL p1(-1, 'MultiPoint(9 9,8 1,1 5)');
99+
CALL p1(-1, 'MultiLineString((0 0,2 2))');
100+
CALL p1(-1, 'MultiLineString((0 0,2 2,0 4))');
101+
CALL p1(-1, 'MultiLineString((0 0,2 2),(0 2,2 0))');
102+
CALL p1(-1, 'MultiLineString((2 2,2 8,-2 8),(-6 -6, 6 6),(10 10, 14 14))');
103+
#
104+
# Wrong shape
105+
#CALL p1(-1, 'MultiPolygon(((2 2,2 8,8 8,8 2,2 2)), ((9 9,8 1,1 5,9 9)))');
106+
#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)))');
107+
#
108+
CALL p1(-1, 'GeometryCollection(Point(0 0))');
109+
CALL p1(-1, 'GeometryCollection(LineString(0 0, 2 2)))');
110+
CALL p1(-1, 'GeometryCollection(Polygon((2 2,2 8,8 8,8 2,2 2))))');
111+
CALL p1(-1, 'GeometryCollection(MultiPoint(9 9,8 1,1 5))');
112+
CALL p1(-1, 'GeometryCollection(MultiLineString((0 0,0 1),(3 0,3 1)))');
113+
#
114+
# Wrong shape
115+
# 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))))');
116+
#
117+
CALL p1(-1, 'GeometryCollection(Point(9 9),LineString(1 5,0 0),Polygon((2 2,2 8,8 8,8 2,2 2)))');
118+
119+
120+
--enable_query_log
121+
122+
SELECT ST_CONTAINS(
123+
GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'),
124+
GeomFromText('POINT(5 10)'));
125+
SELECT AsText(ST_UNION(
126+
GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'),
127+
GeomFromText('POINT(5 10)')));
128+
129+
DROP PROCEDURE p1;
130+
131+
--echo #
132+
--echo # Bug #13833019 ASSERTION `T1->RESULT_RANGE' FAILED IN GCALC_OPERATION_REDUCER::END_COUPLE
133+
--echo #
134+
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));
135+
136+
--echo #
137+
--echo # Bug #13832749 HANDLE_FATAL_SIGNAL IN GCALC_FUNCTION::COUNT_INTERNAL
138+
--echo #
139+
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));

0 commit comments

Comments
 (0)