Fix for bug #29980: 5.1.20 ate my table

Problem: trying to repair an old (e.g. with "old" varstring fields) corrupted 
table with use_frm option we don't actually repair the table, just altering it
which may couse data loss.

Fix: if use_frm repair option is set, do repair instead of altering even 
if the table needs upgrade.
parent 8e22343c
...@@ -4132,7 +4132,8 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables, ...@@ -4132,7 +4132,8 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
goto err; goto err;
} }
if (operator_func == &handler::ha_repair) if (operator_func == &handler::ha_repair &&
!(check_opt->sql_flags & TT_USEFRM))
{ {
if ((table->table->file->check_old_types() == HA_ADMIN_NEEDS_ALTER) || if ((table->table->file->check_old_types() == HA_ADMIN_NEEDS_ALTER) ||
(table->table->file->ha_check_for_upgrade(check_opt) == (table->table->file->ha_check_for_upgrade(check_opt) ==
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment