summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2016-04-01 15:43:24 +0200
committerSergei Golubchik <serg@mariadb.org>2016-10-08 15:24:06 +0200
commitd902e45b27a12b5b7ff705b8e977460b770ca8a4 (patch)
tree2b7df9920c7aeb42cf1ff030be702630f367ead6
parent87659b91c6d36d60cf31f2f9b87a2499707f3c66 (diff)
downloadmariadb-git-d902e45b27a12b5b7ff705b8e977460b770ca8a4.tar.gz
cleanup: spatial indexes in myisam
In spatial indexes there can be only one keyseg. Make it explicit in the code, don't pretend that this can work with the arbitrary number of keysegs.
-rw-r--r--storage/myisam/mi_create.c5
-rw-r--r--storage/myisam/mi_open.c5
2 files changed, 6 insertions, 4 deletions
diff --git a/storage/myisam/mi_create.c b/storage/myisam/mi_create.c
index 88b9da6f8a9..dbf2343c2a6 100644
--- a/storage/myisam/mi_create.c
+++ b/storage/myisam/mi_create.c
@@ -273,7 +273,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
so we only need to decrease keydef->keysegs.
(see recreate_table() in mi_check.c)
*/
- keydef->keysegs-=sp_segs-1;
+ keydef->keysegs= 1;
}
for (j=0, keyseg=keydef->seg ; (int) j < keydef->keysegs ;
@@ -287,7 +287,8 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
goto err_no_lock;
}
}
- keydef->keysegs+=sp_segs;
+ DBUG_ASSERT(keydef->keysegs == 1);
+ keydef->keysegs= sp_segs + 1;
key_length+=SPLEN*sp_segs;
length++; /* At least one length byte */
min_key_length_skip+=SPLEN*2*SPDIMS;
diff --git a/storage/myisam/mi_open.c b/storage/myisam/mi_open.c
index b8cbefe6ac2..4afd64b9561 100644
--- a/storage/myisam/mi_open.c
+++ b/storage/myisam/mi_open.c
@@ -377,8 +377,9 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
{
#ifdef HAVE_SPATIAL
uint sp_segs=SPDIMS*2;
- share->keyinfo[i].seg=pos-sp_segs;
- share->keyinfo[i].keysegs--;
+ keyinfo->seg= pos - sp_segs;
+ DBUG_ASSERT(keyinfo->keysegs == sp_segs + 1);
+ keyinfo->keysegs= sp_segs;
#else
my_errno=HA_ERR_UNSUPPORTED;
goto err;