Bug #32032 | OpenGIS Contains() does not work on MultiPolygons; disconnects in some cases. | ||
---|---|---|---|
Submitted: | 1 Nov 2007 14:38 | Modified: | 8 Aug 2012 10:34 |
Reporter: | Justin Bronn | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: GIS | Severity: | S3 (Non-critical) |
Version: | 5.1.23-beta-GIS-log, 4.1.23 | OS: | Any (SunOS 5.11 snv_71, Linux) |
Assigned to: | Assigned Account | CPU Architecture: | Any |
Tags: | contains, disconnect, gis, mbrcontains, multipolygon, opengis, performance, polygon |
[1 Nov 2007 14:38]
Justin Bronn
[1 Nov 2007 16:03]
Hartmut Holzgraefe
Visualization: the two squares form the multi-polygon, and the 'X' is the point which is obviously outside the polygons 1 1 0 1 2 3 4 5 6 7 8 9 0 1 0 +---------+ | | 1 | | | | 2 | | | | 3 | | | | 4 | | | | 5 +---------+ 6 +---------+ | | 7 | | | | 8 | | | | 9 | | | | 10 X | | | | 11 +---------+
[1 Nov 2007 16:05]
Hartmut Holzgraefe
Verified the wrong result but not the disconnect. The CONTAINS() query takes about 25s(!) on my machine though, maybe this massive delay can eventually cause disconnects depending on server hardware and load?
[1 Nov 2007 16:32]
Justin Bronn
I neglected to mention that the disconnect is immediate and occurs as soon as the query is executed (at least on Solaris) -- it is not the result of a timeout.
[4 Nov 2007 21:31]
John Powell
I have had the same disconnect problem, both on a build I made on ubuntu linux and on a downloaded windows binary. In my case I am using a real world spatial database with millions of geometric objects in, mulitpolygons, polygons, lines and points. The contains and intersects functions appear to work correctly and my queries work fine if only around 50 rows are returned. However, queries that would return bigger result sets completely hang my system, cpu 100%, massive ram usage until either the query loses its connection or mysqld crashes. I am currently writing a stored procedure to provide a verifiable test case for this and will include my system logs.
[24 Nov 2007 15:31]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/38427 ChangeSet@1.2639, 2007-11-24 19:26:05+04:00, holyfoot@mysql.com +1 -0 Bug #32032 OpenGIS Contains() does not work on MultiPolygons; disconnects in some cases. Gis_multi_* objects have an error in ::store_shapes() function implementation that produced a very long list of objects, which usually leads to crash.
[31 May 2008 2:06]
Jackey Cheung
I'm using the win32 binary (mysql-5.1.23-beta-GIS-GIS-win32) on an XP SP2. It returns NULL while checking against POINT(100 100). Also, it seems to return NULL when check against very polygons with huge amount of nodes.
[8 Jun 2009 10:44]
Tomas Ulin
Changing status to PQ as the bug is fixed and is pushed to the future GIS tree
[8 Aug 2012 10:34]
Alexander Barkov
This bug was earlier partially fixed in mysql-5.1 (the crash), as well as in mysql-5.6.0 (with adding of precise GIS operations).
[5 Oct 2012 16:06]
Paul DuBois
Noted in 5.6.1 changelog. Contains() failed for multipolygon geometries.