Commit 822d4bd0 authored by serg@serg.mysql.com's avatar serg@serg.mysql.com

better fix for OPTIMIZE bug

parent 5563f67c
...@@ -617,16 +617,12 @@ int ha_myisam::repair(THD *thd, MI_CHECK &param, bool optimize) ...@@ -617,16 +617,12 @@ int ha_myisam::repair(THD *thd, MI_CHECK &param, bool optimize)
STATE_CRASHED_ON_REPAIR); STATE_CRASHED_ON_REPAIR);
file->update|=HA_STATE_CHANGED | HA_STATE_ROW_CHANGED; file->update|=HA_STATE_CHANGED | HA_STATE_ROW_CHANGED;
} }
/* Here we need to make file->save_state and file->s->state.state /*
equal. Unfortunately, sometime table comes locked here (so the following 'if', thought conceptually wrong,
file->save_state represents actual table state), and sometime is a useful optimization nevertheless.
unlocked (and actual is file->s->state.state instead). This all */
is very confusing, and should be streamlined (TODO). if (file->state != &file->s->state.state);
*/ file->s->state.state = *file->state;
if (file->state == & file->save_state)
file->s->state.state=file->save_state;
else
file->save_state=file->s->state.state;
if (file->s->base.auto_key) if (file->s->base.auto_key)
update_auto_increment_key(&param, file, 1); update_auto_increment_key(&param, file, 1);
if (optimize_done) if (optimize_done)
......
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