summaryrefslogtreecommitdiff
path: root/storage/innobase/row/row0upd.c
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@oracle.com>2012-02-16 12:24:11 +0200
committerMarko Mäkelä <marko.makela@oracle.com>2012-02-16 12:24:11 +0200
commit4045c9976cf475b3f42f4133440c1d9a9060fb25 (patch)
tree322175509bfd7f4eb202977f0c628c372538d0a5 /storage/innobase/row/row0upd.c
parent66b658720605482b5b98a827ed063a05a49318bc (diff)
downloadmariadb-git-4045c9976cf475b3f42f4133440c1d9a9060fb25.tar.gz
Add instrumentation for Bug#13721257 RACE CONDITION IN UPDATES OR INSERTS
OF WIDE RECORDS row_ins_index_entry_low(), row_upd_clust_rec(): Make a redo log checkpoint if a DEBUG flag is set. Add DEBUG_SYNC around btr_store_big_rec_extern_fields(). rb:946 approved by Jimmy Yang
Diffstat (limited to 'storage/innobase/row/row0upd.c')
-rw-r--r--storage/innobase/row/row0upd.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/storage/innobase/row/row0upd.c b/storage/innobase/row/row0upd.c
index 0790cfe02e2..d3ed71089a8 100644
--- a/storage/innobase/row/row0upd.c
+++ b/storage/innobase/row/row0upd.c
@@ -6,6 +6,9 @@ Update of a row
Created 12/27/1996 Heikki Tuuri
*******************************************************/
+#include "my_global.h" /* HAVE_* */
+#include "m_string.h" /* for my_sys.h */
+#include "my_sys.h" /* DEBUG_SYNC_C */
#include "row0upd.h"
#ifdef UNIV_NONINL
@@ -1591,15 +1594,20 @@ row_upd_clust_rec(
rec_t* rec;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
- mtr_start(mtr);
+ DBUG_EXECUTE_IF(
+ "row_upd_extern_checkpoint",
+ log_make_checkpoint_at(ut_dulint_max, TRUE););
+ mtr_start(mtr);
ut_a(btr_pcur_restore_position(BTR_MODIFY_TREE, pcur, mtr));
rec = btr_cur_get_rec(btr_cur);
+ DEBUG_SYNC_C("before_row_upd_extern");
err = btr_store_big_rec_extern_fields(
index, rec,
rec_get_offsets(rec, index, offsets_,
ULINT_UNDEFINED, &heap),
big_rec, mtr);
+ DEBUG_SYNC_C("after_row_upd_extern");
if (UNIV_LIKELY_NULL(heap)) {
mem_heap_free(heap);
}