summaryrefslogtreecommitdiff
path: root/myisam/mi_extra.c
diff options
context:
space:
mode:
authorunknown <serg@serg.mysql.com>2001-05-24 13:14:25 +0200
committerunknown <serg@serg.mysql.com>2001-05-24 13:14:25 +0200
commit1c8902e4ef6e57b648fcd9978bc1e20e917df40b (patch)
tree10377fbee77e1cf260ad739e99d78ff27c26e8d4 /myisam/mi_extra.c
parent83e3058c3e6ebd1ec2ffa03854eaf1388bb4c484 (diff)
downloadmariadb-git-1c8902e4ef6e57b648fcd9978bc1e20e917df40b.tar.gz
ALTER TABLE ... DISABLE/ENABLE KEYS, code cleanup
myisam/ft_boolean_search.c: qsort_cmp -> qsort_cmp2 myisam/mi_extra.c: ALTER TABLE ... ENABLE/DISABLE KEYS mi_extra(HA_EXTRA_NO_KEYS) disables only only non-unique keys myisam/myisamlog.c: qsort_cmp -> qsort_cmp2 sql/ha_myisam.cc: ALTER TABLE ENABLE/DISABLE KEYS deactivate_non_unique_index(HA_POS_ERROR) to force deactivation sql/ha_myisam.h: ALTER TABLE ... DISABLE/ENABLE KEYS sql/sql_table.cc: ALTER TABLE ... DISABLE/ENABLE KEYS
Diffstat (limited to 'myisam/mi_extra.c')
-rw-r--r--myisam/mi_extra.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/myisam/mi_extra.c b/myisam/mi_extra.c
index cf075512ac4..e1e4fe75a07 100644
--- a/myisam/mi_extra.c
+++ b/myisam/mi_extra.c
@@ -219,9 +219,17 @@ int mi_extra(MI_INFO *info, enum ha_extra_function function)
}
if (share->state.key_map)
{
- share->state.key_map=0;
- info->state->key_file_length=share->state.state.key_file_length=
- share->base.keystart;
+ MI_KEYDEF *key=share->keyinfo;
+ uint i;
+ for (i=0 ; i < share->base.keys ; i++,key++)
+ {
+ if (!(key->flag & HA_NOSAME) && info->s->base.auto_key != i+1)
+ {
+ share->state.key_map&= ~ ((ulonglong) 1 << i);
+ info->update|= HA_STATE_CHANGED;
+ }
+ }
+
if (!share->changed)
{
share->state.changed|= STATE_CHANGED | STATE_NOT_ANALYZED;