st_distance() results are incorrect depending on variable order

Bug #1043845 reported by Matt Woods on 2012-08-30
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MariaDB
Fix Committed
High
Alexey Botchkov

Bug Description

Using MariaDB 5.3.3 on CentOS 6.0

The st_distance() function returns different results depending on the order of the variables. The results appear to be more accurate when the least complex spatial object is used as the first variable. For instance, st_distance(point, linestring) appears to consistently return accurate results but st_distance(linestring, point) often returns incorrect results depending on the linestring and point data. See below for a specific example.

As a workaround we have had success using the least complex spatial object first where point < linestring < polygon (from a complexity standpoint).

select st_distance(geomfromtext('
LINESTRING(
-95.9673005697771 36.13509598461,
-95.9673057475387 36.1344478941074,
-95.9673063519371 36.134484524621,
-95.9673049102515 36.1343976584193
)
'),geomfromtext('point(-95.96269500000000000000 36.14181833333330000000)'))
;
Result: 0.000574275965624497

select st_distance(geomfromtext('point(-95.96269500000000000000 36.14181833333330000000)')
, geomfromtext('
LINESTRING(
-95.9673005697771 36.13509598461,
-95.9673057475387 36.1344478941074,
-95.9673063519371 36.134484524621,
-95.9673049102515 36.1343976584193
)
'))
;
Result: 0.00791407398682628

Elena Stepanova (elenst) wrote :
Changed in maria:
milestone: none → 5.3
assignee: nobody → Alexey Botchkov (holyfoot)
importance: Undecided → High
Alexey Botchkov (holyfoot) wrote :

The fix is pushed to the maria/5.3 tree.

Changed in maria:
status: New → Fix Committed
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers