mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
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.
This commit is contained in:
7
mysql-test/r/innodb_bug45357.result
Normal file
7
mysql-test/r/innodb_bug45357.result
Normal file
@ -0,0 +1,7 @@
|
||||
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;
|
10
mysql-test/t/innodb_bug45357.test
Normal file
10
mysql-test/t/innodb_bug45357.test
Normal file
@ -0,0 +1,10 @@
|
||||
-- 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
|
||||
#include "btr0cur.ic"
|
||||
#endif
|
||||
|
||||
#include "mtr0log.h"
|
||||
#include "page0page.h"
|
||||
#include "rem0rec.h"
|
||||
#include "rem0cmp.h"
|
||||
|
@ -7,6 +7,7 @@ Created 3/26/1996 Heikki Tuuri
|
||||
*******************************************************/
|
||||
|
||||
#include "srv0srv.h"
|
||||
#include "mtr0log.h"
|
||||
|
||||
/**********************************************************************
|
||||
Gets a rollback segment header. */
|
||||
|
@ -1529,9 +1529,14 @@ row_unlock_for_mysql(
|
||||
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
|
||||
transaction, do not unlock it. */
|
||||
ut_a(index->type & DICT_CLUSTERED);
|
||||
|
||||
if (index->trx_id_offset) {
|
||||
rec_trx_id = trx_read_trx_id(rec
|
||||
@ -1568,7 +1573,7 @@ row_unlock_for_mysql(
|
||||
prebuilt->select_lock_type);
|
||||
}
|
||||
}
|
||||
|
||||
no_unlock:
|
||||
mtr_commit(&mtr);
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,7 @@ Created 3/26/1996 Heikki Tuuri
|
||||
#include "que0que.h"
|
||||
#include "trx0purge.h"
|
||||
#include "row0row.h"
|
||||
#include "mtr0log.h"
|
||||
|
||||
/*=========== UNDO LOG RECORD CREATION AND DECODING ====================*/
|
||||
|
||||
|
Reference in New Issue
Block a user