diff options
author | monty@donna.mysql.fi <> | 2001-03-28 04:16:04 +0300 |
---|---|---|
committer | monty@donna.mysql.fi <> | 2001-03-28 04:16:04 +0300 |
commit | 1a077f4a558fba8563908817a107be679607ebb4 (patch) | |
tree | 38b2247ef713d4674800dd1b3bd02090dd25c35f /myisam | |
parent | e5da9a96dee0f182290575a38d43b37221829c14 (diff) | |
download | mariadb-git-1a077f4a558fba8563908817a107be679607ebb4.tar.gz |
Let ALTER TABLE and LOAD DATA INFILE use sorting to create index
Call init_signals before intializing table handlers. This should fix the signal problem in Innobase on Solaris
Diffstat (limited to 'myisam')
-rw-r--r-- | myisam/mi_check.c | 10 | ||||
-rw-r--r-- | myisam/myisamchk.c | 1 |
2 files changed, 9 insertions, 2 deletions
diff --git a/myisam/mi_check.c b/myisam/mi_check.c index 4bd6747d499..64fbafca022 100644 --- a/myisam/mi_check.c +++ b/myisam/mi_check.c @@ -3166,12 +3166,18 @@ void mi_disable_non_unique_index(MI_INFO *info, ha_rows rows) */ my_bool mi_test_if_sort_rep(MI_INFO *info, ha_rows rows, + ulonglong key_map, my_bool force) { MYISAM_SHARE *share=info->s; - uint i; MI_KEYDEF *key=share->keyinfo; - if (!share->state.key_map) + uint i; + + /* + repair_by_sort only works if we have at least one key. If we don't + have any keys, we should use the normal repair. + */ + if (!key_map) return FALSE; /* Can't use sort */ for (i=0 ; i < share->base.keys ; i++,key++) { diff --git a/myisam/myisamchk.c b/myisam/myisamchk.c index 220040fcc0a..cbdd6a26767 100644 --- a/myisam/myisamchk.c +++ b/myisam/myisamchk.c @@ -693,6 +693,7 @@ static int myisamchk(MI_CHECK *param, my_string filename) (share->state.key_map || (rep_quick && !param->keys_in_use && !recreate)) && mi_test_if_sort_rep(info, info->state->records, + info->s->state.key_map, check_param.force_sort)) { error=mi_repair_by_sort(&check_param,info,fixed_name,rep_quick); |