diff options
Diffstat (limited to 'storage/maria/ma_check.c')
-rw-r--r-- | storage/maria/ma_check.c | 40 |
1 files changed, 7 insertions, 33 deletions
diff --git a/storage/maria/ma_check.c b/storage/maria/ma_check.c index 101c33b7802..0a271a77a36 100644 --- a/storage/maria/ma_check.c +++ b/storage/maria/ma_check.c @@ -164,6 +164,9 @@ int maria_chk_status(HA_CHECK *param, MARIA_HA *info) { MARIA_SHARE *share= info->s; + /* Protection for HA_EXTRA_FLUSH */ + mysql_mutex_lock(&share->intern_lock); + if (maria_is_crashed_on_repair(info)) _ma_check_print_warning(param, "Table is marked as crashed and last repair failed"); @@ -186,6 +189,9 @@ int maria_chk_status(HA_CHECK *param, MARIA_HA *info) if (param->testflag & T_UPDATE_STATE) param->warning_printed=save; } + + mysql_mutex_unlock(&share->intern_lock); + if (share->state.create_trid > param->max_trid) { param->wrong_trd_printed= 1; /* Force should run zerofill */ @@ -6435,7 +6441,7 @@ static ha_checksum maria_byte_checksum(const uchar *buf, uint length) return crc; } -static my_bool maria_too_big_key_for_sort(MARIA_KEYDEF *key, ha_rows rows) +my_bool maria_too_big_key_for_sort(MARIA_KEYDEF *key, ha_rows rows) { uint key_maxlength=key->maxlength; if (key->flag & HA_FULLTEXT) @@ -6451,38 +6457,6 @@ static my_bool maria_too_big_key_for_sort(MARIA_KEYDEF *key, ha_rows rows) } /* - Deactivate all indexes that can be recreated fast. - These include packed keys on which sorting will use more temporary - space than the max allowed file length or for which the unpacked keys - will take much more space than packed keys. - Note that 'rows' may be zero for the case when we don't know how many - rows we will put into the file. - */ - -void maria_disable_indexes_for_rebuild(MARIA_HA *info, ha_rows rows, - my_bool all_keys) -{ - MARIA_SHARE *share= info->s; - MARIA_KEYDEF *key=share->keyinfo; - uint i; - - DBUG_ASSERT(share->state.state.records == 0 && - (!rows || rows >= MARIA_MIN_ROWS_TO_DISABLE_INDEXES)); - for (i=0 ; i < share->base.keys ; i++,key++) - { - if (!(key->flag & (HA_SPATIAL | HA_AUTO_KEY | HA_RTREE_INDEX)) && - ! maria_too_big_key_for_sort(key,rows) && share->base.auto_key != i+1 && - (all_keys || !(key->flag & HA_NOSAME))) - { - maria_clear_key_active(share->state.key_map, i); - info->update|= HA_STATE_CHANGED; - info->create_unique_index_by_sort= all_keys; - } - } -} - - -/* Return TRUE if we can use repair by sorting One can set the force argument to force to use sorting even if the temporary file would be quite big! |