diff options
author | Thirunarayanan Balathandayuthapani <thiru@mariadb.com> | 2022-03-26 12:05:53 +0530 |
---|---|---|
committer | Thirunarayanan Balathandayuthapani <thiru@mariadb.com> | 2022-03-26 12:06:13 +0530 |
commit | 5a607f95151475950ee8875dc13156b0b9523907 (patch) | |
tree | 50dfd14d64cad2b60dcc71b57753b510dcfc4cf6 | |
parent | c433c9587f374103ee20751f6214e979fad63cab (diff) | |
download | mariadb-git-5a607f95151475950ee8875dc13156b0b9523907.tar.gz |
- Fixing TRX_UNDO_UPD_DEL_REC read error issue
-rw-r--r-- | storage/innobase/row/row0log.cc | 9 | ||||
-rw-r--r-- | storage/innobase/trx/trx0undo.cc | 10 |
2 files changed, 12 insertions, 7 deletions
diff --git a/storage/innobase/row/row0log.cc b/storage/innobase/row/row0log.cc index 195b91ed6a1..e897e5306ac 100644 --- a/storage/innobase/row/row0log.cc +++ b/storage/innobase/row/row0log.cc @@ -4227,7 +4227,14 @@ void row_log_insert_handle(const dtuple_t *tuple, copy_rec, offsets, table, NULL, NULL, &ext, heap); if (table->n_v_cols) - trx_undo_read_v_cols(table, rec_info->undo_rec, row, false); + { + if (rec_info->type == TRX_UNDO_UPD_DEL_REC) + row_upd_replace_vcol(row, table, rec_info->update, false, + nullptr, + (rec_info->cmpl_info & UPD_NODE_NO_ORD_CHANGE) + ? nullptr : rec_info->undo_rec); + else trx_undo_read_v_cols(table, rec_info->undo_rec, row, false); + } dict_index_t *index= dict_table_get_next_index(clust_index); while (index) diff --git a/storage/innobase/trx/trx0undo.cc b/storage/innobase/trx/trx0undo.cc index cd307a22ff4..8efe7e3dec8 100644 --- a/storage/innobase/trx/trx0undo.cc +++ b/storage/innobase/trx/trx0undo.cc @@ -328,16 +328,14 @@ static void trx_undo_rec_apply_update(trx_undo_rec_t *rec, &info_bits); rec= trx_undo_rec_get_row_ref(rec, index, &undo_tuple, heap); + rec= trx_undo_update_rec_get_update(rec, index, rec_info->type, + trx_id, roll_ptr, info_bits, + heap, &rec_info->update); + rec_info->undo_rec= rec; if (rec_info->type == TRX_UNDO_UPD_DEL_REC) row_log_insert_handle(undo_tuple, rec_info, index, heap); else - { - rec= trx_undo_update_rec_get_update(rec, index, rec_info->type, - trx_id, roll_ptr, info_bits, - heap, &rec_info->update); - rec_info->undo_rec= rec; row_log_update_handle(undo_tuple, rec_info, index, heap); - } } /** Apply all DML undo log records to the online DDL tables |