• Michael Widenius's avatar
    Fix of LP#616253 Crash in _ma_bitmap_set_full_page_bits on Aria recovery · ecf95c6e
    Michael Widenius authored
    The bug was based on wrong undo data in recovery file and not enough checking of bad data.
    
    sql/sql_select.h:
      Added comment
    storage/maria/ma_blockrec.c:
      - Removed wrong sanity checks (didn't work for UNDO records)
      - More sanity checks and DBUG_ASSERT
      - More DBUG_ENTER and DBUG_PRINT
      - Removed filler blocks in extent_to_bitmap_blocks() as it caused problems in write_block_record().
        This was the main cause of the bug.
        (This change can make records generated by UNDO slightly smaller than original record, which we have to fix
        by correcting row_pos.length before calling write_block_record())
      - Fixed some problems in write_block_record() while doing UNDO.
      - Store header_length without TRANSID_SIZE into recovery log (as UNDO entires doesn't have TRANSID_SIZE)
      - Mark table crashed if something goes wrong during UNDO
    storage/maria/maria_def.h:
      Added header_length
    ecf95c6e
ma_blockrec.c 241 KB