summaryrefslogtreecommitdiff
path: root/sql/ha_myisam.cc
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2004-10-20 16:24:28 +0300
committerunknown <monty@mysql.com>2004-10-20 16:24:28 +0300
commit560d7bcdd0c80551b7844b3669be503113c91ddf (patch)
treef3f6e81dac72352598beb9c21f116d2ef7f9c3ef /sql/ha_myisam.cc
parent7bdb93aa7e8b2c4d003f68635af8e1cbe757f6e6 (diff)
parentec8779e95a46b3dfff492196ad004cb2716df3c3 (diff)
downloadmariadb-git-560d7bcdd0c80551b7844b3669be503113c91ddf.tar.gz
Merge with 4.0
BitKeeper/etc/logging_ok: auto-union Docs/Support/texi2html: Auto merged innobase/trx/trx0rec.c: Auto merged libmysql/libmysql.c: Auto merged myisam/myisampack.c: Auto merged mysql-test/t/innodb-lock.test: Auto merged mysys/thr_lock.c: Auto merged sql/ha_innodb.cc: Auto merged sql/lock.cc: Auto merged sql/sql_acl.cc: Keep old code
Diffstat (limited to 'sql/ha_myisam.cc')
-rw-r--r--sql/ha_myisam.cc18
1 files changed, 16 insertions, 2 deletions
diff --git a/sql/ha_myisam.cc b/sql/ha_myisam.cc
index 0b993ebe793..6504dd321a0 100644
--- a/sql/ha_myisam.cc
+++ b/sql/ha_myisam.cc
@@ -537,6 +537,7 @@ int ha_myisam::repair(THD* thd, HA_CHECK_OPT *check_opt)
int ha_myisam::optimize(THD* thd, HA_CHECK_OPT *check_opt)
{
+ int error;
if (!file) return HA_ADMIN_INTERNAL_ERROR;
MI_CHECK param;
@@ -546,7 +547,14 @@ int ha_myisam::optimize(THD* thd, HA_CHECK_OPT *check_opt)
param.testflag = (check_opt->flags | T_SILENT | T_FORCE_CREATE |
T_REP_BY_SORT | T_STATISTICS | T_SORT_INDEX);
param.sort_buffer_length= check_opt->sort_buffer_size;
- return repair(thd,param,1);
+ if ((error= repair(thd,param,1)) && param.retry_repair)
+ {
+ sql_print_warning("Warning: Optimize table got errno %d, retrying",
+ my_errno);
+ param.testflag&= ~T_REP_BY_SORT;
+ error= repair(thd,param,1);
+ }
+ return error;
}
@@ -913,7 +921,13 @@ int ha_myisam::enable_indexes(uint mode)
param.myf_rw&= ~MY_WAIT_IF_FULL;
param.sort_buffer_length= thd->variables.myisam_sort_buff_size;
param.tmpdir=&mysql_tmpdir_list;
- error=repair(thd,param,0) != HA_ADMIN_OK;
+ if ((error= (repair(thd,param,0) != HA_ADMIN_OK)) && param.retry_repair)
+ {
+ sql_print_warning("Warning: Enabling keys got errno %d, retrying",
+ my_errno);
+ param.testflag&= ~(T_REP_BY_SORT | T_QUICK);
+ error= (repair(thd,param,0) != HA_ADMIN_OK);
+ }
info(HA_STATUS_CONST);
thd->proc_info=save_proc_info;
}