diff --git a/storage/maria/ma_blockrec.c b/storage/maria/ma_blockrec.c index bdad9538b62f4501e336941ef5360fa85a7f7d23..7709de703c0aa09e7bba99d49066c460f7e00b78 100644 --- a/storage/maria/ma_blockrec.c +++ b/storage/maria/ma_blockrec.c @@ -1537,6 +1537,7 @@ static my_bool write_full_pages(MARIA_HA *info, length-= copy_length; DBUG_ASSERT(share->pagecache->block_size == block_size); + /** @todo RECOVERY BUG the page does not get a rec_lsn with this! */ if (pagecache_write(share->pagecache, &info->dfile, page, 0, buff, share->page_type, diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c index 637a5d0d9a105adb9b1d24835586592361bad924..97c9b56d9e8e61280dd2e4a87177960c65ee4bae 100644 --- a/storage/maria/ma_recovery.c +++ b/storage/maria/ma_recovery.c @@ -298,6 +298,15 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply, fprintf(stderr, " (%.1f seconds); ", phase_took); } + /** + REDO phase does not fill blocks' rec_lsn, so a checkpoint now would be + wrong: if a future recovery used it, the REDO phase would always + start from the checkpoint and never from before, wrongly skipping REDOs + (tested). + + @todo fix this. + */ +#if 0 if (take_checkpoints && checkpoint_useful) { /* @@ -308,6 +317,7 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply, if (ma_checkpoint_execute(CHECKPOINT_INDIRECT, FALSE)) goto err; } +#endif if (should_run_undo_phase) {