Skip to content

Commit efe0284

Browse files
committed
Bug#21238614 ST_BUFFER(LINESTRING) MAY PRODUCE AN INVALID POLYGON
Tweak the expected test results by use of regex to work around the differences in the resulting cooridnates on various platforms.
1 parent 9958e72 commit efe0284

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

mysql-test/suite/gis/r/spatial_analysis_functions_buffer.result

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -301,9 +301,9 @@ GEOMETRYCOLLECTION(GEOMETRYCOLLECTION())
301301
SELECT ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))'), 100));
302302
ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))'), 100))
303303
GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))
304-
SELECT ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10))'), 10));
305-
ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10))'), 10))
306-
POLYGON((0 10.0000,-1.9509 9.8078,-3.8268 9.2387,-5.5557 8.3146,-7.0710 7.0710,-8.3146 5.5557,-9.2387 3.8268,-9.8078 1.9509,-10 7.65e-15,-9.8078 -1.9509,-9.2387 -3.8268,-8.3146 -5.5557,-7.0710 -7.0710,-5.5557 -8.3146,-3.8268 -9.2387,-1.9509 -9.8078,6.12e-16 -10,1.9509 -9.8078,3.8268 -9.2387,5.5557 -8.3146,7.0710 -7.0710,8.3146 -5.5557,9.2387 -3.8268,9.8078 -1.9509,10 0,11.9509 0.1921,13.8268 0.7612,15.5557 1.6853,17.0710 2.9289,18.3146 4.4442,19.2387 6.1731,19.8078 8.0490,20 10,19.8078 11.9509,19.2387 13.8268,18.3146 15.5557,17.0710 17.0710,15.5557 18.3146,13.8268 19.2387,11.9509 19.8078,10.0000 20,8.0490 19.8078,6.1731 19.2387,4.4442 18.3146,2.9289 17.0710,1.6853 15.5557,0.7612 13.8268,0.1921 11.9509,0 10.0000))
304+
SELECT ST_AREA(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10))'), 10)) BETWEEN 568.21 AND 568.22;
305+
ST_AREA(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10))'), 10)) BETWEEN 568.21 AND 568.22
306+
1
307307
SELECT ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10)))'), 5));
308308
ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10)))'), 5))
309309
MULTIPOLYGON(((5 0,4.9039 0.9754,4.6193 1.9134,4.1573 2.7778,3.5355 3.5355,2.7778 4.1573,1.9134 4.6193,0.9754 4.9039,1.24e-14 5,-0.9754 4.9039,-1.9134 4.6193,-2.7778 4.1573,-3.5355 3.5355,-4.1573 2.7778,-4.6193 1.9134,-4.9039 0.9754,-5 3.82e-15,-4.9039 -0.9754,-4.6193 -1.9134,-4.1573 -2.7778,-3.5355 -3.5355,-2.7778 -4.1573,-1.9134 -4.6193,-0.9754 -4.9039,3.06e-16 -5,0.9754 -4.9039,1.9134 -4.6193,2.7778 -4.1573,3.5355 -3.5355,4.1573 -2.7778,4.6193 -1.9134,4.9039 -0.9754,5 0)),((15 10,14.9039 10.9754,14.6193 11.9134,14.1573 12.7778,13.5355 13.5355,12.7778 14.1573,11.9134 14.6193,10.9754 14.9039,10.0000 15,9.0245 14.9039,8.0865 14.6193,7.2221 14.1573,6.4644 13.5355,5.8426 12.7778,5.3806 11.9134,5.0960 10.9754,5 10.0000,5.0960 9.0245,5.3806 8.0865,5.8426 7.2221,6.4644 6.4644,7.2221 5.8426,8.0865 5.3806,9.0245 5.0960,10 5,10.9754 5.0960,11.9134 5.3806,12.7778 5.8426,13.5355 6.4644,14.1573 7.2221,14.6193 8.0865,14.9039 9.0245,15 10)))
@@ -654,7 +654,7 @@ SELECT ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0,5
654654
ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0,5 5,10 10),'
655655
'LINESTRING(0 0,-5 -5,-10 -10),'
656656
'MULTILINESTRI
657-
POLYGON((4.1421 -10,10 -10,11.9509 -9.8078,13.8268 -9.2387,15.5557 -8.3146,17.0710 -7.0710,18.3146 -5.5557,19.2387 -3.8268,19.8078 -1.9509,20 0,19.8078 1.9509,19.2387 3.8268,18.6117 4.9999,19.2387 6.1731,19.8078 8.0490,20 9.9999,19.8078 11.9509,19.2387 13.8268,18.3146 15.5557,17.0710 17.0710,15.5557 18.3146,13.8268 19.2387,11.9509 19.8078,10.0000 20,8.0490 19.8078,6.1731 19.2387,4.4442 18.3146,2.9289 17.0710,-4.1421 10,-10 10,-11.9509 9.8078,-13.8268 9.2387,-15.5557 8.3146,-17.0710 7.0710,-18.3146 5.5557,-19.2387 3.8268,-19.8078 1.9509,-20 7.65e-15,-19.8078 -1.9509,-19.2387 -3.8268,-18.6117 -5.0000,-19.2387 -6.1731,-19.8078 -8.0490,-20 -9.9999,-19.8078 -11.9509,-19.2387 -13.8268,-18.3146 -15.5557,-17.0710 -17.0710,-15.5557 -18.3146,-13.8268 -19.2387,-11.9509 -19.8078,-10 -20,-8.0490 -19.8078,-6.1731 -19.2387,-4.4442 -18.3146,-2.9289 -17.0710,4.1421 -10))
657+
POLYGON((4.1421 -10,10 -10,11.9509 -9.8078,13.8268 -9.2387,15.5557 -8.3146,17.0710 -7.0710,18.3146 -5.5557,19.2387 -3.8268,19.8078 -1.9509,20 0,19.8078 1.9509,19.2387 3.8268,18.6117 5.0000,19.2387 6.1731,19.8078 8.0490,20 9.9999,19.8078 11.9509,19.2387 13.8268,18.3146 15.5557,17.0710 17.0710,15.5557 18.3146,13.8268 19.2387,11.9509 19.8078,10.0000 20,8.0490 19.8078,6.1731 19.2387,4.4442 18.3146,2.9289 17.0710,-4.1421 10,-10 10,-11.9509 9.8078,-13.8268 9.2387,-15.5557 8.3146,-17.0710 7.0710,-18.3146 5.5557,-19.2387 3.8268,-19.8078 1.9509,-20 7.65e-15,-19.8078 -1.9509,-19.2387 -3.8268,-18.6117 -5.0000,-19.2387 -6.1731,-19.8078 -8.0490,-20 -9.9999,-19.8078 -11.9509,-19.2387 -13.8268,-18.3146 -15.5557,-17.0710 -17.0710,-15.5557 -18.3146,-13.8268 -19.2387,-11.9509 -19.8078,-10 -20,-8.0490 -19.8078,-6.1731 -19.2387,-4.4442 -18.3146,-2.9289 -17.0710,4.1421 -10))
658658
SELECT ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,0 5,5 5,5 0,0 0)),'
659659
'MULTIPOLYGON(((0 0,2 2,4 0,0 0)),((3 3,3 5,5 5,5 3,3 3))))'), 10, ST_BUFFER_STRATEGY('join_round', 10)));
660660
ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POLYGON((0 0,0 5,5 5,5 0,0 0)),'

mysql-test/suite/gis/t/spatial_analysis_functions_buffer.test

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -335,8 +335,10 @@ SELECT ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTIO
335335
--replace_regex /([0-9]+\.[0-9]{4})[0-9]*/\1/ /([0-9]*\.[0-9]{2})[0-9]*(e[-+]*[0-9]+)/\1\2/
336336
SELECT ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION()))'), 100));
337337

338-
--replace_regex /([0-9]+\.[0-9]{4})[0-9]*/\1/ /([0-9]*\.[0-9]{2})[0-9]*(e[-+]*[0-9]+)/\1\2/
339-
SELECT ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10))'), 10));
338+
# area check used because of the differences on various platforms
339+
#--replace_regex /([0-9]+\.[0-9]{4})[0-9]*/\1/ /([0-9]*\.[0-9]{2})[0-9]*(e[-+]*[0-9]+)/\1\2/
340+
#SELECT ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10))'), 10));
341+
SELECT ST_AREA(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10))'), 10)) BETWEEN 568.21 AND 568.22;
340342

341343
--replace_regex /([0-9]+\.[0-9]{4})[0-9]*/\1/ /([0-9]*\.[0-9]{2})[0-9]*(e[-+]*[0-9]+)/\1\2/
342344
SELECT ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(10 10),MULTIPOINT(0 0,10 10)))'), 5));
@@ -680,7 +682,7 @@ SELECT ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(MULTIPOLYGON(((0
680682
SELECT ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0,5 5,10 10),'
681683
'MULTILINESTRING((0 0,10 10)))'), 10, ST_BUFFER_STRATEGY('join_round', 10)));
682684

683-
--replace_regex /([0-9]+\.[0-9]{4})[0-9]*/\1/ /([0-9]*\.[0-9]{2})[0-9]*(e[-+]*[0-9]+)/\1\2/
685+
--replace_regex /([0-9]+\.[0-9]{4})[0-9]*/\1/ /([0-9]*\.[0-9]{2})[0-9]*(e[-+]*[0-9]+)/\1\2/ /(4.9999)/5.0000/
684686
SELECT ST_ASTEXT(ST_BUFFER(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0,5 5,10 10),'
685687
'LINESTRING(0 0,-5 -5,-10 -10),'
686688
'MULTILINESTRING((0 0,5 5,10 10)),'

0 commit comments

Comments
 (0)