• Marko Mäkelä's avatar
    MDEV-31816 buf_LRU_free_page() does not preserve ROW_FORMAT=COMPRESSED block state · d794d348
    Marko Mäkelä authored
    buf_LRU_free_page(): When we are discarding the uncompressed copy of a
    ROW_FORMAT=COMPRESSED page, buf_page_t::can_relocate() must have ensured
    that the block descriptor state is one of FREED, UNFIXED, REINIT.
    Do not overwrite the state with UNFIXED. We do not want to write back
    pages that were actually freed, and we want to avoid doublewrite for
    pages that were (re)initialized by log records written since the latest
    checkpoint. Last but not least, we do not want crashes like those that
    commit dc1bd180 (MDEV-31386)
    was supposed to fix.
    
    The test innodb_zip.wl5522_zip should typically cover all 3 states.
    
    This bug is a regression due to
    commit aaef2e1d (MDEV-27058).
    d794d348
buf0lru.cc 43.4 KB