Bug #75829 | ST_Centroid produces incorrect results with MultiPolygon | ||
---|---|---|---|
Submitted: | 9 Feb 2015 19:36 | Modified: | 21 May 2015 14:31 |
Reporter: | Bryan Blakey | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: GIS | Severity: | S2 (Serious) |
Version: | 5.6.23 | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[9 Feb 2015 19:36]
Bryan Blakey
[9 Feb 2015 19:45]
Bryan Blakey
Whoopsie. I accidentally added a comma between X and Y values in the test case "actual output" comment above. I am not getting the extra comma in the output from ST_Centroid (I'm just too used to typing coordinates that way in other languages). Actual output from running the test case on 5.6.23 is: POINT(4 3.5)
[9 Feb 2015 23:22]
MySQL Verification Team
Thank you for the bug report. 5.7 not affected. mysql 5.6 > SHOW VARIABLES LIKE"%VERSION%"; +-------------------------+--------------------------------+ | Variable_name | Value | +-------------------------+--------------------------------+ | innodb_version | 5.6.24 | | protocol_version | 10 | | slave_type_conversions | | | version | 5.6.24 | | version_comment | Source distribution 2015/02/09 | | version_compile_machine | x86_64 | | version_compile_os | Win64 | +-------------------------+--------------------------------+ 7 rows in set (0.00 sec) mysql 5.6 > SELECT AsText(ST_Centroid(@mpoly)); +-----------------------------+ | AsText(ST_Centroid(@mpoly)) | +-----------------------------+ | POINT(4 3.5) | +-----------------------------+ 1 row in set (0.00 sec) mysql 5.7 > SHOW VARIABLES LIKE"%VERSION%"; +-------------------------+--------------------------------+ | Variable_name | Value | +-------------------------+--------------------------------+ | innodb_version | 5.7.6 | | protocol_version | 10 | | slave_type_conversions | | | version | 5.7.6-m16 | | version_comment | Source distribution 2015/02/09 | | version_compile_machine | x86_64 | | version_compile_os | Win64 | +-------------------------+--------------------------------+ 7 rows in set (0.00 sec) mysql 5.7 > SELECT AsText(ST_Centroid(@mpoly)); +-----------------------------+ | AsText(ST_Centroid(@mpoly)) | +-----------------------------+ | POINT(3 3) | +-----------------------------+ 1 row in set, 1 warning (0.00 sec) mysql 5.7 > show warnings; +---------+------+----------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------------------------+ | Warning | 1287 | 'ASTEXT' is deprecated and will be removed in a future release. Please use ST_ASTEXT instead | +---------+------+----------------------------------------------------------------------------------------------+ 1 row in set (0.02 sec) mysql 5.7 > SELECT ST_AsText(ST_Centroid(@mpoly)); +--------------------------------+ | ST_AsText(ST_Centroid(@mpoly)) | +--------------------------------+ | POINT(3 3) | +--------------------------------+ 1 row in set (0.00 sec)
[21 May 2015 14:31]
Paul DuBois
Noted in 5.7.8, 5.8.0 changelogs. ST_Centroid() with a MultiPolygon argument could produce incorrect results.
[21 May 2015 14:44]
Paul DuBois
Issues were resolved by use of Boost.Geometry for GIS algorithms.