From 52706fd316b1ae249b190f95d08de192d442dd3c Mon Sep 17 00:00:00 2001 From: "heikki@hundin.mysql.fi" <> Date: Tue, 22 Jul 2003 03:23:02 +0300 Subject: [PATCH] btr0cur.c: Fix an error in the previous push --- innobase/btr/btr0cur.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/innobase/btr/btr0cur.c b/innobase/btr/btr0cur.c index c0fc9566c80..8c9c84b103d 100644 --- a/innobase/btr/btr0cur.c +++ b/innobase/btr/btr0cur.c @@ -1784,6 +1784,20 @@ btr_cur_pessimistic_update( trx->id); } + if (flags & BTR_NO_UNDO_LOG_FLAG) { + /* We are in a transaction rollback undoing a row + update: we must free possible externally stored fields + which got new values in the update, if they are not + inherited values. They can be inherited if we have + updated the primary key to another value, and then + update it back again. */ + + ut_a(big_rec_vec == NULL); + + btr_rec_free_updated_extern_fields(index, rec, update, + TRUE, mtr); + } + /* We have to set appropriate extern storage bits in the new record to be inserted: we have to remember which fields were such */ @@ -1821,20 +1835,6 @@ btr_cur_pessimistic_update( btr_search_update_hash_on_delete(cursor); - if (flags & BTR_NO_UNDO_LOG_FLAG) { - /* We are in a transaction rollback undoing a row - update: we must free possible externally stored fields - which got new values in the update, if they are not - inherited values. They can be inherited if we have - updated the primary key to another value, and then - update it back again. */ - - ut_a(big_rec_vec == NULL); - - btr_rec_free_updated_extern_fields(index, rec, update, - TRUE, mtr); - } - page_cur_delete_rec(page_cursor, mtr); page_cur_move_to_prev(page_cursor);