summaryrefslogtreecommitdiff
path: root/sql/ha_myisam.cc
diff options
context:
space:
mode:
authorunknown <serg@serg.mylan>2004-06-23 16:13:26 +0200
committerunknown <serg@serg.mylan>2004-06-23 16:13:26 +0200
commitb0993317ecb22a07b4c8eeaac32e4c0477dfe6f4 (patch)
treeeb30549ca4d6662a33f77ac74b06640deac30267 /sql/ha_myisam.cc
parenteb70dc5593e987ac2745224ce0ac37f5def22c48 (diff)
parent85e9258b05b2490e35aa60adecf48a3f65245eb0 (diff)
downloadmariadb-git-b0993317ecb22a07b4c8eeaac32e4c0477dfe6f4.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-4.1/
into serg.mylan:/usr/home/serg/Abk/mysql-4.1 sql/ha_myisam.cc: Auto merged
Diffstat (limited to 'sql/ha_myisam.cc')
-rw-r--r--sql/ha_myisam.cc31
1 files changed, 22 insertions, 9 deletions
diff --git a/sql/ha_myisam.cc b/sql/ha_myisam.cc
index 0ee8979e898..fc203d14d19 100644
--- a/sql/ha_myisam.cc
+++ b/sql/ha_myisam.cc
@@ -1013,16 +1013,29 @@ bool ha_myisam::check_and_repair(THD *thd)
if (!file->state->del && (myisam_recover_options & HA_RECOVER_QUICK))
check_opt.flags|=T_QUICK;
sql_print_error("Warning: Checking table: '%s'",table->path);
- if ((marked_crashed=mi_is_crashed(file)) || check(thd, &check_opt))
+ if ((marked_crashed=mi_is_crashed(file)))
{
- sql_print_error("Warning: Recovering table: '%s'",table->path);
- check_opt.flags=
- ((myisam_recover_options & HA_RECOVER_BACKUP ? T_BACKUP_DATA : 0) |
- (marked_crashed ? 0 : T_QUICK) |
- (myisam_recover_options & HA_RECOVER_FORCE ? 0 : T_SAFE_REPAIR) |
- T_AUTO_REPAIR);
- if (repair(thd, &check_opt))
- error=1;
+ char *old_query= thd->query;
+ uint old_query_length= thd->query_length;
+ pthread_mutex_lock(&LOCK_thread_count);
+ thd->query= table->real_name;
+ thd->query_length= strlen(table->real_name);
+ pthread_mutex_unlock(&LOCK_thread_count);
+ if (check(thd, &check_opt))
+ {
+ sql_print_error("Warning: Recovering table: '%s'",table->path);
+ check_opt.flags=
+ ((myisam_recover_options & HA_RECOVER_BACKUP ? T_BACKUP_DATA : 0) |
+ (marked_crashed ? 0 : T_QUICK) |
+ (myisam_recover_options & HA_RECOVER_FORCE ? 0 : T_SAFE_REPAIR) |
+ T_AUTO_REPAIR);
+ if (repair(thd, &check_opt))
+ error=1;
+ }
+ pthread_mutex_lock(&LOCK_thread_count);
+ thd->query= old_query;
+ thd->query_length= old_query_length;
+ pthread_mutex_unlock(&LOCK_thread_count);
}
DBUG_RETURN(error);
}