From 59402fe0a76bae115c622cc241995180c4bdf4c9 Mon Sep 17 00:00:00 2001 From: Satya Bodapati Date: Wed, 11 Sep 2013 16:57:02 +0530 Subject: Bug#16752251 - INNODB DOESN'T REDO-LOG INSERT BUFFER MERGE OPERATION IF IT IS DONE IN-PLACE With change buffer enabled, InnoDB doesn't write a transaction log record when it merges a record from the insert buffer to an secondary index page if the insertion is performed as an update-in-place. Fixed by logging the 'update-in-place' operation on secondary index pages. Approved by Marko. rb#2429 --- storage/innobase/include/btr0cur.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'storage/innobase/include') diff --git a/storage/innobase/include/btr0cur.h b/storage/innobase/include/btr0cur.h index c2b81d0ae91..bab405fa91e 100644 --- a/storage/innobase/include/btr0cur.h +++ b/storage/innobase/include/btr0cur.h @@ -558,6 +558,19 @@ btr_push_update_extern_fields( const ulint* offsets,/* in: array returned by rec_get_offsets() */ upd_t* update);/* in: update vector or NULL */ +/*************************************************************** +Writes a redo log record of updating a record in-place. */ +UNIV_INLINE +void +btr_cur_update_in_place_log( +/*========================*/ + ulint flags, /* in: flags */ + rec_t* rec, /* in: record */ + dict_index_t* index, /* in: index where cursor positioned */ + upd_t* update, /* in: update vector */ + trx_t* trx, /* in: transaction */ + dulint roll_ptr, /* in: roll ptr */ + mtr_t* mtr); /* in: mtr */ /*######################################################################*/ -- cgit v1.2.1