Bug #29070 | Error in spatial index | ||
---|---|---|---|
Submitted: | 13 Jun 2007 12:11 | Modified: | 27 Jul 2007 15:59 |
Reporter: | Alejandro Soto | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server | Severity: | S1 (Critical) |
Version: | 5.0.41 | OS: | Solaris (solaris 8) |
Assigned to: | Georgi Kodinov | CPU Architecture: | Any |
Tags: | gis, spatial |
[13 Jun 2007 12:11]
Alejandro Soto
[13 Jun 2007 12:16]
Alejandro Soto
bug-data-29070.zip FTP uploaded
[14 Jun 2007 20:21]
Sveta Smirnova
Thank you for the report. Verified as described.
[5 Jul 2007 10:19]
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/30360 ChangeSet@1.2516, 2007-07-05 13:18:54+03:00, gkodinov@magare.gmz +3 -0 Bug #29070: Error in spatial index The MBR for a key is stored on disk. Therefore it must be in platform independent byte order. Fixed by reading and writing to/from the MBR in platform independent byte order.
[5 Jul 2007 12:58]
Alexander Barkov
The patch looks ok to push for me. Please fix a small coding style mismatch before push: > diff -Nrup a/myisam/sp_key.c b/myisam/sp_key.c > --- a/myisam/sp_key.c 2006-12-23 21:04:06 +02:00 > +++ b/myisam/sp_key.c 2007-07-05 13:18:53 +03:00 <skip> > @@ -116,11 +116,14 @@ stored in "well-known binary representat > static int sp_mbr_from_wkb(uchar *wkb, uint size, uint n_dims, double *mbr) > { > uint i; > + double dbl_max= DBL_MAX, neg_dbl_max= -DBL_MAX; > > for (i=0; i < n_dims; ++i) > { > - mbr[i * 2] = DBL_MAX; > - mbr[i * 2 + 1] = -DBL_MAX; > + char *mbr_ptr= (char *) (mbr + (i * 2)); > + float8store(mbr_ptr, dbl_max); > + mbr_ptr += sizeof (double); Wrong coding style, please fix to: mbr_ptr+= sizeof(double); <skip>
[5 Jul 2007 13:07]
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/30378 ChangeSet@1.2516, 2007-07-05 16:06:51+03:00, gkodinov@magare.gmz +3 -0 Bug #29070: Error in spatial index The MBR for a key is stored on disk. Therefore it must be in platform independent byte order. Fixed by reading and writing to/from the MBR in platform independent byte order.
[5 Jul 2007 13:23]
Alexander Barkov
Sorry, need to check it more carefully. Unticking the "review done" checkbox.
[9 Jul 2007 10:24]
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/30523 ChangeSet@1.2516, 2007-07-09 13:24:04+03:00, gkodinov@magare.gmz +3 -0 Bug #29070: Error in spatial index 1. Threat MBR for a key as double[] and convert it only when about to store it on disk. 2. Remove the redundant function get_double().
[9 Jul 2007 13:28]
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/30528 ChangeSet@1.2516, 2007-07-09 16:28:38+03:00, gkodinov@magare.gmz +3 -0 Bug #29070: Error in spatial index 1. Threat MBR for a key as double[] and convert it only when about to store it on disk. 2. Remove the redundant function get_double().
[9 Jul 2007 14:41]
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/30531 ChangeSet@1.2516, 2007-07-09 17:41:24+03:00, gkodinov@magare.gmz +3 -0 Bug #29070: Error in spatial index 1. Threat MBR for a key as double[] and convert it only when about to store it on disk. 2. Remove the redundant function get_double().
[20 Jul 2007 23:45]
Bugs System
Pushed into 5.1.21-beta
[20 Jul 2007 23:49]
Bugs System
Pushed into 5.0.48
[27 Jul 2007 15:59]
Paul DuBois
Noted in 5.0.48, 5.1.21 changelogs. A byte-order issue in writing a spatial index to disk caused bad index files on some systems.