Commit 7d0675f6 authored by Satya B's avatar Satya B

Applying InnoDB snashot 5.1-ss5343, Fixes BUG#45357

1. BUG#45357 - 5.1.35 crashes with Failing assertion: index->type & DICT_CLUSTERED

2. Also fixes the compilation problem when the flag -DUNIV_MUST_NOT_INLINE

Detailed revision comments:

r5340 | marko | 2009-06-17 12:11:49 +0300 (Wed, 17 Jun 2009) | 4 lines
branches/5.1: row_unlock_for_mysql(): When the clustered index is unknown,
refuse to unlock the record.
(Bug #45357, caused by the fix of Bug #39320).
rb://132 approved by Sunny Bains.
r5339 | marko | 2009-06-17 11:01:37 +0300 (Wed, 17 Jun 2009) | 2 lines
branches/5.1: Add missing #include "mtr0log.h" so that the code compiles
with -DUNIV_MUST_NOT_INLINE.
parent 5ce0b41f
set session transaction isolation level read committed;
create table bug45357(a int, b int,key(b))engine=innodb;
insert into bug45357 values (25170,6122);
update bug45357 set a=1 where b=30131;
delete from bug45357 where b < 20996;
delete from bug45357 where b < 7001;
drop table bug45357;
-- source include/have_innodb.inc
set session transaction isolation level read committed;
create table bug45357(a int, b int,key(b))engine=innodb;
insert into bug45357 values (25170,6122);
update bug45357 set a=1 where b=30131;
delete from bug45357 where b < 20996;
delete from bug45357 where b < 7001;
drop table bug45357;
...@@ -23,6 +23,7 @@ Created 10/16/1994 Heikki Tuuri ...@@ -23,6 +23,7 @@ Created 10/16/1994 Heikki Tuuri
#include "btr0cur.ic" #include "btr0cur.ic"
#endif #endif
#include "mtr0log.h"
#include "page0page.h" #include "page0page.h"
#include "rem0rec.h" #include "rem0rec.h"
#include "rem0cmp.h" #include "rem0cmp.h"
......
...@@ -7,6 +7,7 @@ Created 3/26/1996 Heikki Tuuri ...@@ -7,6 +7,7 @@ Created 3/26/1996 Heikki Tuuri
*******************************************************/ *******************************************************/
#include "srv0srv.h" #include "srv0srv.h"
#include "mtr0log.h"
/********************************************************************** /**********************************************************************
Gets a rollback segment header. */ Gets a rollback segment header. */
......
...@@ -1529,9 +1529,14 @@ row_unlock_for_mysql( ...@@ -1529,9 +1529,14 @@ row_unlock_for_mysql(
index = btr_pcur_get_btr_cur(clust_pcur)->index; index = btr_pcur_get_btr_cur(clust_pcur)->index;
} }
if (UNIV_UNLIKELY(!(index->type & DICT_CLUSTERED))) {
/* This is not a clustered index record. We
do not know how to unlock the record. */
goto no_unlock;
}
/* If the record has been modified by this /* If the record has been modified by this
transaction, do not unlock it. */ transaction, do not unlock it. */
ut_a(index->type & DICT_CLUSTERED);
if (index->trx_id_offset) { if (index->trx_id_offset) {
rec_trx_id = trx_read_trx_id(rec rec_trx_id = trx_read_trx_id(rec
...@@ -1568,7 +1573,7 @@ row_unlock_for_mysql( ...@@ -1568,7 +1573,7 @@ row_unlock_for_mysql(
prebuilt->select_lock_type); prebuilt->select_lock_type);
} }
} }
no_unlock:
mtr_commit(&mtr); mtr_commit(&mtr);
} }
......
...@@ -23,6 +23,7 @@ Created 3/26/1996 Heikki Tuuri ...@@ -23,6 +23,7 @@ Created 3/26/1996 Heikki Tuuri
#include "que0que.h" #include "que0que.h"
#include "trx0purge.h" #include "trx0purge.h"
#include "row0row.h" #include "row0row.h"
#include "mtr0log.h"
/*=========== UNDO LOG RECORD CREATION AND DECODING ====================*/ /*=========== UNDO LOG RECORD CREATION AND DECODING ====================*/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment