mariadb/storage/innobase/trx
Mohammad Tafzeel Shams 7fed014308 MDEV-38140: InnoDB index corruption after UPDATE affecting virtual
columns

Issue:
- Purge thread attempts to purge a secondary index record that is not
  delete-marked.

Root Cause:
- When a secondary index includes a virtual column whose v_pos is
  greater than the number of fields in the clustered index record, the
  virtual column is incorrectly skipped while reading from the undo
  record.
- This leads the purge logic to incorrectly assume it is safe to purge
  the secondary index record.
- The code also confuses the nth virtual column with the nth stored
  column when writing ordering columns at the end of the undo record.

Fix:
- In trx_undo_update_rec_get_update(): Skip a virtual column only
  when v_pos == FIL_NULL, not when v_pos is greater than the number
  of fields.
- In trx_undo_page_report_modify(): Ensure ordering columns are
  written based on the correct stored-column positions, without
  confusing them with virtual-column positions.
2026-01-15 12:19:48 +05:30
..
trx0i_s.cc MDEV-24035 Failing assertion: UT_LIST_GET_LEN(lock.trx_locks) == 0 causing disruption and replication failure 2024-12-12 18:02:00 +02:00
trx0purge.cc MDEV-37672: Remove innodb_trx_rseg_n_slots_debug 2025-10-22 09:33:53 +03:00
trx0rec.cc MDEV-38140: InnoDB index corruption after UPDATE affecting virtual 2026-01-15 12:19:48 +05:30
trx0roll.cc MDEV-33064: Sync trx->wsrep state from THD on trx start 2025-01-14 02:17:22 +01:00
trx0rseg.cc MDEV-34678 pthread_mutex_init() without pthread_mutex_destroy() 2024-08-14 07:54:15 +03:00
trx0sys.cc MDEV-37672: Remove innodb_trx_rseg_n_slots_debug 2025-10-22 09:33:53 +03:00
trx0trx.cc MDEV-37672: Remove innodb_trx_rseg_n_slots_debug 2025-10-22 09:33:53 +03:00
trx0undo.cc MDEV-37672: Remove innodb_trx_rseg_n_slots_debug 2025-10-22 09:33:53 +03:00