mariadb/storage/innobase/trx
Thirunarayanan Balathandayuthapani a184b95abf MDEV-38993 Assertion `trx->undo_no == 1' fails upon ALTER IGNORE
Problem:
========
During ALTER TABLE ... IGNORE, a partial rollback on duplicate key
error resets trx->undo_no to 0. The subsequent insert then enters
the undo rewrite block with undo_no == 0, hitting the assertion
that expected undo_no == 1.

Solution:
=========
Partial rollback which truncates the last insert undo record
via trx_undo_truncate_end(), which rewrites TRX_UNDO_PAGE_FREE
on the page. By checking trx->undo_no as part of the rewrite
predicate, InnoDB correctly skips the rewrite logic after partial
rollback.

trx_undo_report_row_operation(): Pre-compute the full predicate
(clear_ignore) before trx_undo_assign_low(), since old_offset
and top_offset are not modified by that call.

trx_undo_rewrite_ignore(): Extract the rewrite body into a
separate ATTRIBUTE_COLD ATTRIBUTE_NOINLINE static function.
2026-03-09 18:33:05 +05:30
..
trx0i_s.cc MDEV-37619 The forced use of THD accessors hurts InnoDB performance 2025-09-16 15:18:32 +03:00
trx0purge.cc Merge 10.6 into 10.11 2025-10-23 10:38:55 +03:00
trx0rec.cc MDEV-38993 Assertion `trx->undo_no == 1' fails upon ALTER IGNORE 2026-03-09 18:33:05 +05:30
trx0roll.cc MDEV-38589: SELECT unnecessarily waits for log write 2026-01-28 13:24:09 +02:00
trx0rseg.cc Merge 10.6 into 10.11 2024-08-14 11:36:52 +03:00
trx0sys.cc Merge 10.6 into 10.11 2025-10-23 10:38:55 +03:00
trx0trx.cc MDEV-38589: SELECT unnecessarily waits for log write 2026-01-28 13:24:09 +02:00
trx0undo.cc MDEV-36436 Assertion "unexpected references" == 0 after ALTER IGNORE TABLE 2026-02-26 13:18:23 +05:30