diff options
Diffstat (limited to 'storage/innobase/row/row0uins.cc')
-rw-r--r-- | storage/innobase/row/row0uins.cc | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/storage/innobase/row/row0uins.cc b/storage/innobase/row/row0uins.cc index 27881c1f4c3..7b50d8b62ae 100644 --- a/storage/innobase/row/row0uins.cc +++ b/storage/innobase/row/row0uins.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1997, 2012, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1997, 2013, Oracle and/or its affiliates. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -79,12 +79,11 @@ row_undo_ins_remove_clust_rec( mtr_start(&mtr); - /* This is similar to row_undo_mod_clust(). Even though we - call row_log_table_rollback() elsewhere, the DDL thread may - already have copied this row to the sort buffers or to the new - table. We must log the removal, so that the row will be - correctly purged. However, we can log the removal out of sync - with the B-tree modification. */ + /* This is similar to row_undo_mod_clust(). The DDL thread may + already have copied this row from the log to the new table. + We must log the removal, so that the row will be correctly + purged. However, we can log the removal out of sync with the + B-tree modification. */ online = dict_index_is_online_ddl(index); if (online) { @@ -111,9 +110,7 @@ row_undo_ins_remove_clust_rec( const ulint* offsets = rec_get_offsets( rec, index, NULL, ULINT_UNDEFINED, &heap); row_log_table_delete( - rec, index, offsets, - trx_read_trx_id(row_get_trx_id_offset(index, offsets) - + rec)); + rec, index, offsets, true, node->trx->id); mem_heap_free(heap); } @@ -319,7 +316,8 @@ row_undo_ins_parse_undo_rec( node->rec_type = type; node->update = NULL; - node->table = dict_table_open_on_id(table_id, dict_locked, FALSE); + node->table = dict_table_open_on_id( + table_id, dict_locked, DICT_TABLE_OP_NORMAL); /* Skip the UNDO if we can't find the table or the .ibd file. */ if (UNIV_UNLIKELY(node->table == NULL)) { @@ -441,14 +439,6 @@ row_undo_ins( node->index = dict_table_get_first_index(node->table); ut_ad(dict_index_is_clust(node->index)); - - if (dict_index_is_online_ddl(node->index)) { - /* Note that we are rolling back this transaction, so - that all inserts and updates with this DB_TRX_ID can - be skipped. */ - row_log_table_rollback(node->index, node->trx->id); - } - /* Skip the clustered index (the first index) */ node->index = dict_table_get_next_index(node->index); |