summaryrefslogtreecommitdiff
path: root/myisam
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
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')
-rw-r--r--myisam/ft_boolean_search.c2
-rw-r--r--myisam/mi_extra.c14
-rw-r--r--myisam/myisamlog.c2
3 files changed, 13 insertions, 5 deletions
diff --git a/myisam/ft_boolean_search.c b/myisam/ft_boolean_search.c
index f0865932ca0..8f7f8ab5d73 100644
--- a/myisam/ft_boolean_search.c
+++ b/myisam/ft_boolean_search.c
@@ -198,7 +198,7 @@ FT_DOCLIST *ft_boolean_search(MI_INFO *info, uint keynr, byte *query,
aio.end=query+query_len;
aio.total_yes=aio.total_no=0;
- init_tree(&aio.dtree,0,sizeof(FT_SUPERDOC),(qsort_cmp)&FT_SUPERDOC_cmp,0,
+ init_tree(&aio.dtree,0,sizeof(FT_SUPERDOC),(qsort_cmp2)&FT_SUPERDOC_cmp,0,
NULL);
if (do_boolean(&aio,0,0,0,0))
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;
diff --git a/myisam/myisamlog.c b/myisam/myisamlog.c
index ca2c4f27a74..8ff9bb0dc1a 100644
--- a/myisam/myisamlog.c
+++ b/myisam/myisamlog.c
@@ -331,7 +331,7 @@ static int examine_log(my_string file_name, char **table_names)
init_io_cache(&cache,file,0,READ_CACHE,start_offset,0,MYF(0));
bzero((gptr) com_count,sizeof(com_count));
- init_tree(&tree,0,sizeof(file_info),(qsort_cmp) file_info_compare,1,
+ init_tree(&tree,0,sizeof(file_info),(qsort_cmp2) file_info_compare,1,
(void(*)(void*)) file_info_free);
VOID(init_key_cache(KEY_CACHE_SIZE,(uint) (10*4*(IO_SIZE+MALLOC_OVERHEAD))));