diff options
author | unknown <monty@donna.mysql.com> | 2000-10-11 01:18:03 +0300 |
---|---|---|
committer | unknown <monty@donna.mysql.com> | 2000-10-11 01:18:03 +0300 |
commit | da2c52f1fe73f1fca8d95875957b4bcb4bd84a4b (patch) | |
tree | b2c67cc4d23c305090ee2d98ec39d9ec6b034a3c /myisam | |
parent | e07d0930f4ecadf576c1dca76df3caab83ba04ae (diff) | |
parent | 3b5f8e5ee4ca4f78c2701d819f41820391de8b1a (diff) | |
download | mariadb-git-da2c52f1fe73f1fca8d95875957b4bcb4bd84a4b.tar.gz |
merge
mysys/charset.c:
Auto merged
BitKeeper/etc/logging_ok:
Auto merged
Diffstat (limited to 'myisam')
-rw-r--r-- | myisam/ft_update.c | 2 | ||||
-rw-r--r-- | myisam/mi_check.c | 19 | ||||
-rw-r--r-- | myisam/mi_open.c | 5 | ||||
-rw-r--r-- | myisam/myisamchk.c | 24 | ||||
-rw-r--r-- | myisam/sort.c | 6 |
5 files changed, 35 insertions, 21 deletions
diff --git a/myisam/ft_update.c b/myisam/ft_update.c index 7cfce1158fc..658ea9282f3 100644 --- a/myisam/ft_update.c +++ b/myisam/ft_update.c @@ -64,7 +64,7 @@ static FT_WORD * _mi_ft_parserecord(MI_INFO *info, uint keynr, byte *keybuf, return NULL; } /* Handle the case where all columns are NULL */ - if (!parsed && !(parsed=ft_parse(0, "", 0))) + if (!parsed && !(parsed=ft_parse(0, (byte*) "", 0))) return NULL; return ft_linearize(info, keynr, keybuf, parsed); } diff --git a/myisam/mi_check.c b/myisam/mi_check.c index c6a07ff9c36..a35ccc7edf4 100644 --- a/myisam/mi_check.c +++ b/myisam/mi_check.c @@ -192,6 +192,7 @@ int chk_del(MI_CHECK *param, register MI_INFO *info, uint test_flag) } DBUG_RETURN(0); wrong: + param->retry_without_quick=1; // Don't use quick repair if (test_flag & T_VERBOSE) puts(""); mi_check_print_error(param,"record delete-link-chain corrupted"); DBUG_RETURN(1); @@ -291,6 +292,7 @@ int chk_size(MI_CHECK *param, register MI_INFO *info) error=1; mi_check_print_error(param,"Size of datafile is: %-8s Should be: %s", llstr(size,buff), llstr(skr,buff2)); + param->retry_without_quick=1; // Don't use quick repair } else { @@ -750,8 +752,9 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend) { if (block_info.block_len < info->s->base.min_block_length) { - mi_check_print_error(param,"Deleted block with impossible length %lu at %s", - block_info.block_len,llstr(pos,llbuff)); + mi_check_print_error(param, + "Deleted block with impossible length %lu at %s", + block_info.block_len,llstr(pos,llbuff)); goto err2; } if ((block_info.next_filepos != HA_OFFSET_ERROR && @@ -1071,7 +1074,7 @@ int mi_repair(MI_CHECK *param, register MI_INFO *info, new_file= -1; if (!(param->testflag & T_SILENT)) { - printf("- recovering MyISAM-table '%s'\n",name); + printf("- recovering (with keycache) MyISAM-table '%s'\n",name); printf("Data records: %s\n", llstr(info->state->records,llbuff)); } @@ -1211,6 +1214,7 @@ int mi_repair(MI_CHECK *param, register MI_INFO *info, mi_check_print_error(param,"Couldn't fix table with quick recovery: Found wrong number of deleted records"); mi_check_print_error(param,"Run recovery again without -q"); got_error=1; + param->retry_repair=param->retry_without_quick=1; goto err; } @@ -1651,7 +1655,7 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info, share->pack.header_length; if (!(param->testflag & T_SILENT)) { - printf("- recovering MyISAM-table '%s'\n",name); + printf("- recovering (with sort) MyISAM-table '%s'\n",name); printf("Data records: %s\n", llstr(start_records,llbuff)); } bzero((char*) sort_info,sizeof(*sort_info)); @@ -1805,7 +1809,10 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info, if (_create_index_by_sort(&sort_param, (my_bool) (!(param->testflag & T_VERBOSE)), (uint) param->sort_buffer_length)) + { + param->retry_repair=1; goto err; + } /* Set for next loop */ sort_param.max_records=sort_info->max_records= @@ -1862,6 +1869,7 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info, mi_check_print_error(param,"Couldn't fix table with quick recovery: Found wrong number of deleted records"); mi_check_print_error(param,"Run recovery again without -q"); got_error=1; + param->retry_repair=param->retry_without_quick=1; goto err; } @@ -3037,7 +3045,8 @@ void mi_disable_non_unique_index(MI_INFO *info, ha_rows rows) even if the temporary file would be quite big! */ -my_bool mi_test_if_sort_rep(MI_INFO *info, ha_rows rows, my_bool force) +my_bool mi_test_if_sort_rep(MI_INFO *info, ha_rows rows, + my_bool force __attribute__((unused))) { MYISAM_SHARE *share=info->s; uint i; diff --git a/myisam/mi_open.c b/myisam/mi_open.c index cb19011fea7..942b4cee491 100644 --- a/myisam/mi_open.c +++ b/myisam/mi_open.c @@ -174,9 +174,10 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags) disk_pos=my_n_base_info_read(disk_cache+base_pos, &share->base); share->state.state_length=base_pos; - if ((open_flags & HA_OPEN_ABORT_IF_CRASHED) && + if (!(open_flags & HA_OPEN_FOR_REPAIR) && ((share->state.changed & STATE_CRASHED) || - (my_disable_locking && share->state.open_count))) + ((open_flags & HA_OPEN_ABORT_IF_CRASHED) && + (my_disable_locking && share->state.open_count)))) { DBUG_PRINT("error",("Table is marked as crashed")); my_errno=((share->state.changed & STATE_CRASHED_ON_REPAIR) ? diff --git a/myisam/myisamchk.c b/myisam/myisamchk.c index c1d3e8873f1..7fad3349d37 100644 --- a/myisam/myisamchk.c +++ b/myisam/myisamchk.c @@ -92,7 +92,7 @@ int main(int argc, char **argv) error=0; while (--argc >= 0) { - error|= myisamchk(&check_param, *(argv++)); + int new_error=myisamchk(&check_param, *(argv++)); VOID(fflush(stdout)); VOID(fflush(stderr)); if ((check_param.error_printed | check_param.warning_printed) && @@ -101,13 +101,16 @@ int main(int argc, char **argv) T_SORT_INDEX)))) { uint old_testflag=check_param.testflag; - check_param.testflag|=T_REP; + if (!(check_param.testflag & T_REP)) + check_param.testflag|= T_REP_BY_SORT; check_param.testflag&= ~T_EXTEND; /* Don't needed */ error|=myisamchk(&check_param, argv[-1]); check_param.testflag= old_testflag; VOID(fflush(stdout)); VOID(fflush(stderr)); } + else + error|=new_error; if (argc && (!(check_param.testflag & T_SILENT) || check_param.testflag & T_INFO)) { puts("\n---------\n"); @@ -193,7 +196,7 @@ static struct option long_options[] = static void print_version(void) { - printf("%s Ver 1.32 for %s at %s\n",my_progname,SYSTEM_TYPE, + printf("%s Ver 1.34 for %s at %s\n",my_progname,SYSTEM_TYPE, MACHINE_TYPE); } @@ -229,7 +232,7 @@ static void usage(void) -f, --force Restart with -r if there are any errors in the table\n\ -i, --information Print statistics information about table that is checked\n\ -m, --medium-check Faster than extended-check, but only finds 99.99% of\n\ - all errors. Should however be good enough for most cases\n\ + all errors. Should be good enough for most cases\n\ -U --update-state Mark tables as crashed if you find any errors\n\ -T, --read-only Don't mark table as checked\n"); @@ -488,10 +491,11 @@ static int myisamchk(MI_CHECK *param, my_string filename) if (!(info=mi_open(filename, (param->testflag & (T_DESCRIPT | T_READONLY)) ? O_RDONLY : O_RDWR, - (param->testflag & T_WAIT_FOREVER) ? - HA_OPEN_WAIT_IF_LOCKED : - (param->testflag & T_DESCRIPT) ? - HA_OPEN_IGNORE_IF_LOCKED : HA_OPEN_ABORT_IF_LOCKED))) + HA_OPEN_FOR_REPAIR | + ((param->testflag & T_WAIT_FOREVER) ? + HA_OPEN_WAIT_IF_LOCKED : + (param->testflag & T_DESCRIPT) ? + HA_OPEN_IGNORE_IF_LOCKED : HA_OPEN_ABORT_IF_LOCKED)))) { /* Avoid twice printing of isam file name */ param->error_printed=1; @@ -748,8 +752,8 @@ static int myisamchk(MI_CHECK *param, my_string filename) error =chk_size(param,info); if (!error || !(param->testflag & (T_FAST | T_FORCE_CREATE))) error|=chk_del(param, info,param->testflag); - if ((!error || !(param->testflag & (T_FAST | T_FORCE_CREATE)) && - !param->start_check_pos)) + if ((!error || (!(param->testflag & (T_FAST | T_FORCE_CREATE)) && + !param->start_check_pos))) { error|=chk_key(param, info); if (!error && (param->testflag & (T_STATISTICS | T_AUTO_INC))) diff --git a/myisam/sort.c b/myisam/sort.c index 80f9b0b0363..436fa5a3c67 100644 --- a/myisam/sort.c +++ b/myisam/sort.c @@ -155,10 +155,10 @@ int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages, printf(" - Merging %lu keys\n",records); if (merge_many_buff(info,keys,sort_keys,buffpek,&maxbuffer,&tempfile)) goto err; - if (flush_io_cache(&tempfile) || - reinit_io_cache(&tempfile,READ_CACHE,0L,0,0)) - goto err; } + if (flush_io_cache(&tempfile) || + reinit_io_cache(&tempfile,READ_CACHE,0L,0,0)) + goto err; if (!no_messages) puts(" - Last merge and dumping keys"); if (merge_index(info,keys,sort_keys,buffpek,maxbuffer,&tempfile)) |