diff options
Diffstat (limited to 'storage/innobase/row/row0merge.cc')
-rw-r--r-- | storage/innobase/row/row0merge.cc | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/storage/innobase/row/row0merge.cc b/storage/innobase/row/row0merge.cc index 4a9d75e9adb..ec13e73b9ed 100644 --- a/storage/innobase/row/row0merge.cc +++ b/storage/innobase/row/row0merge.cc @@ -2294,8 +2294,14 @@ end_of_index: ut_ad(trx->read_view.is_open()); ut_ad(rec_trx_id != trx->id); - if (!trx->read_view.changes_visible( - rec_trx_id, old_table->name)) { + if (!trx->read_view.changes_visible(rec_trx_id)) { + if (rec_trx_id + >= trx->read_view.low_limit_id() + && rec_trx_id + >= trx_sys.get_max_trx_id()) { + goto corrupted_rec; + } + rec_t* old_vers; row_vers_build_for_consistent_read( @@ -4617,9 +4623,7 @@ row_merge_is_index_usable( && (index->table->is_temporary() || index->table->no_rollback() || index->trx_id == 0 || !trx->read_view.is_open() - || trx->read_view.changes_visible( - index->trx_id, - index->table->name))); + || trx->read_view.changes_visible(index->trx_id))); } /** Build indexes on a table by reading a clustered index, creating a temporary |