diff options
Diffstat (limited to 'sql/ha_myisam.cc')
-rw-r--r-- | sql/ha_myisam.cc | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/sql/ha_myisam.cc b/sql/ha_myisam.cc index f96781f83b4..31a8d3c7109 100644 --- a/sql/ha_myisam.cc +++ b/sql/ha_myisam.cc @@ -617,16 +617,12 @@ int ha_myisam::repair(THD *thd, MI_CHECK ¶m, bool optimize) STATE_CRASHED_ON_REPAIR); 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 - file->save_state represents actual table state), and sometime - unlocked (and actual is file->s->state.state instead). This all - is very confusing, and should be streamlined (TODO). - */ - if (file->state == & file->save_state) - file->s->state.state=file->save_state; - else - file->save_state=file->s->state.state; + /* + the following 'if', thought conceptually wrong, + is a useful optimization nevertheless. + */ + if (file->state != &file->s->state.state); + file->s->state.state = *file->state; if (file->s->base.auto_key) update_auto_increment_key(¶m, file, 1); if (optimize_done) |