summaryrefslogtreecommitdiff
path: root/storage/innobase/row/row0uins.cc
diff options
context:
space:
mode:
Diffstat (limited to 'storage/innobase/row/row0uins.cc')
-rw-r--r--storage/innobase/row/row0uins.cc28
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);