• Marko Mäkelä's avatar
    MDEV-14051 'Undo log record is too big.' error occurring in very narrow range of string lengths · 439a7c99
    Marko Mäkelä authored
    InnoDB was writing unnecessary information to the
    update undo log records. Most notably, if an indexed column is updated,
    the old value of the column would be logged twice: first as part of
    the update vector, and then another time because it is an indexed column.
    
    Because the InnoDB undo log record must fit in a single page,
    this would cause unnecessary failure of certain updates.
    
    Even after this fix, InnoDB still seems to be unnecessarily logging
    indexed column values for non-updated columns. It seems that non-updated
    secondary index columns only need to be logged when a PRIMARY KEY
    column is updated. To reduce risk, we are not fixing this remaining flaw
    in GA versions.
    
    trx_undo_page_report_modify(): Log updated indexed columns only once.
    439a7c99
trx0rec.c 47.7 KB