summaryrefslogtreecommitdiff
path: root/myisam/mi_key.c
diff options
context:
space:
mode:
authorunknown <ingo@mysql.com>2006-06-28 14:27:37 +0200
committerunknown <ingo@mysql.com>2006-06-28 14:27:37 +0200
commit0b235009e60929ef254e20b48ae1254196580372 (patch)
treebfe556c39463767c6c8baa87cc09cd92d1ced4fa /myisam/mi_key.c
parentf4a07612efd66a559fe06810deee5e38cd96d03c (diff)
downloadmariadb-git-0b235009e60929ef254e20b48ae1254196580372.tar.gz
Bug#17877 - Corrupted spatial index
CHECK TABLE could complain about a fully intact spatial index. A wrong comparison operator was used for table checking. The result was that it checked for non-matching spatial keys. This succeeded if at least two different keys were present, but failed if only the matching key was present. I fixed the key comparison. myisam/mi_check.c: Bug#17877 - Corrupted spatial index Fixed the comparison operator for checking a spatial index. Using MBR_EQUAL | MBR_DATA to compare for equality and include the data pointer in the comparison. The latter finds the index entry that points to the current record. This is necessary for non-unique indexes. The old operator, SEARCH_SAME, is unknown to the rtree search functions and handled like MBR_DISJOINT. myisam/mi_key.c: Bug#17877 - Corrupted spatial index Added a missing DBUG_RETURN. myisam/rt_index.c: Bug#17877 - Corrupted spatial index Included the data pointer in the copy of the search key. This is necessary for searching the index entry that points to a specific record if the search_flag contains MBR_DATA. myisam/rt_mbr.c: Bug#17877 - Corrupted spatial index Extended the RT_CMP() macro with an assert for an unexpected comparison operator. mysql-test/r/gis-rtree.result: Bug#17877 - Corrupted spatial index The test result. mysql-test/t/gis-rtree.test: Bug#17877 - Corrupted spatial index The test case.
Diffstat (limited to 'myisam/mi_key.c')
-rw-r--r--myisam/mi_key.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/myisam/mi_key.c b/myisam/mi_key.c
index cb85febd869..eaa854b1a37 100644
--- a/myisam/mi_key.c
+++ b/myisam/mi_key.c
@@ -54,7 +54,7 @@ uint _mi_make_key(register MI_INFO *info, uint keynr, uchar *key,
TODO: nulls processing
*/
#ifdef HAVE_SPATIAL
- return sp_make_key(info,keynr,key,record,filepos);
+ DBUG_RETURN(sp_make_key(info,keynr,key,record,filepos));
#else
DBUG_ASSERT(0); /* mi_open should check that this never happens*/
#endif