diff options
author | unknown <serg@serg.mysql.com> | 2001-05-24 13:14:25 +0200 |
---|---|---|
committer | unknown <serg@serg.mysql.com> | 2001-05-24 13:14:25 +0200 |
commit | 1c8902e4ef6e57b648fcd9978bc1e20e917df40b (patch) | |
tree | 10377fbee77e1cf260ad739e99d78ff27c26e8d4 /myisam | |
parent | 83e3058c3e6ebd1ec2ffa03854eaf1388bb4c484 (diff) | |
download | mariadb-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.c | 2 | ||||
-rw-r--r-- | myisam/mi_extra.c | 14 | ||||
-rw-r--r-- | myisam/myisamlog.c | 2 |
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)))); |