List:Commits« Previous MessageNext Message »
From:marko.makela Date:April 26 2010 10:53am
Subject:bzr push into mysql-5.1-innodb branch (marko.makela:3418)
View as plain text  
 3418 Marko Mäkelä	2010-04-26 [merge]
      Merge Vasil Dimov 2010-04-26 Bump InnoDB Plugin version number after 1.0.7

    modified:
      storage/innodb_plugin/include/univ.i
=== added file 'mysql-test/suite/innodb/r/innodb_bug52663.result'
--- a/mysql-test/suite/innodb/r/innodb_bug52663.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/innodb/r/innodb_bug52663.result	2010-04-26 10:27:25 +0000
@@ -0,0 +1,26 @@
+set session transaction isolation level read committed;
+create table innodb_bug52663 (what varchar(5), id integer, count integer, primary key
+(what, id)) engine=innodb;
+insert into innodb_bug52663 values ('total', 0, 0);
+begin;
+set session transaction isolation level read committed;
+begin;
+update innodb_bug52663 set count = count + 1 where what = 'total' and id = 0;
+select * from innodb_bug52663;
+what	id	count
+total	0	1
+update innodb_bug52663 set count = count + 1 where what = 'total' and id = 0;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+select * from innodb_bug52663;
+what	id	count
+total	0	0
+commit;
+update innodb_bug52663 set count = count + 1 where what = 'total' and id = 0;
+commit;
+select * from innodb_bug52663;
+what	id	count
+total	0	2
+select * from innodb_bug52663;
+what	id	count
+total	0	2
+drop table innodb_bug52663;

=== added file 'mysql-test/suite/innodb/t/innodb_bug52663-master.opt'
--- a/mysql-test/suite/innodb/t/innodb_bug52663-master.opt	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/innodb/t/innodb_bug52663-master.opt	2010-04-26 10:27:25 +0000
@@ -0,0 +1 @@
+--innodb_lock_wait_timeout=1

=== added file 'mysql-test/suite/innodb/t/innodb_bug52663.test'
--- a/mysql-test/suite/innodb/t/innodb_bug52663.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/innodb/t/innodb_bug52663.test	2010-04-26 10:27:25 +0000
@@ -0,0 +1,34 @@
+--source include/have_innodb.inc
+
+set session transaction isolation level read committed;
+
+create table innodb_bug52663 (what varchar(5), id integer, count integer, primary key
+(what, id)) engine=innodb;
+insert into innodb_bug52663 values ('total', 0, 0);
+begin;
+
+connect (addconroot, localhost, root,,);
+connection addconroot;
+set session transaction isolation level read committed;
+begin;
+
+connection default;
+update innodb_bug52663 set count = count + 1 where what = 'total' and id = 0;
+select * from innodb_bug52663;
+
+connection addconroot;
+--error ER_LOCK_WAIT_TIMEOUT
+update innodb_bug52663 set count = count + 1 where what = 'total' and id = 0;
+select * from innodb_bug52663;
+
+connection default;
+commit;
+
+connection addconroot;
+update innodb_bug52663 set count = count + 1 where what = 'total' and id = 0;
+commit;
+select * from innodb_bug52663;
+
+connection default;
+select * from innodb_bug52663;
+drop table innodb_bug52663;

=== added file 'mysql-test/suite/innodb_plugin/r/innodb_bug52663.result'
--- a/mysql-test/suite/innodb_plugin/r/innodb_bug52663.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug52663.result	2010-04-26 10:27:25 +0000
@@ -0,0 +1,26 @@
+set session transaction isolation level read committed;
+create table innodb_bug52663 (what varchar(5), id integer, count integer, primary key
+(what, id)) engine=innodb;
+insert into innodb_bug52663 values ('total', 0, 0);
+begin;
+set session transaction isolation level read committed;
+begin;
+update innodb_bug52663 set count = count + 1 where what = 'total' and id = 0;
+select * from innodb_bug52663;
+what	id	count
+total	0	1
+update innodb_bug52663 set count = count + 1 where what = 'total' and id = 0;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+select * from innodb_bug52663;
+what	id	count
+total	0	0
+commit;
+update innodb_bug52663 set count = count + 1 where what = 'total' and id = 0;
+commit;
+select * from innodb_bug52663;
+what	id	count
+total	0	2
+select * from innodb_bug52663;
+what	id	count
+total	0	2
+drop table innodb_bug52663;

=== added file 'mysql-test/suite/innodb_plugin/t/innodb_bug52663.test'
--- a/mysql-test/suite/innodb_plugin/t/innodb_bug52663.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug52663.test	2010-04-26 10:27:25 +0000
@@ -0,0 +1,34 @@
+--source include/have_innodb_plugin.inc
+
+set session transaction isolation level read committed;
+
+create table innodb_bug52663 (what varchar(5), id integer, count integer, primary key
+(what, id)) engine=innodb;
+insert into innodb_bug52663 values ('total', 0, 0);
+begin;
+
+connect (addconroot, localhost, root,,);
+connection addconroot;
+set session transaction isolation level read committed;
+begin;
+
+connection default;
+update innodb_bug52663 set count = count + 1 where what = 'total' and id = 0;
+select * from innodb_bug52663;
+
+connection addconroot;
+--error ER_LOCK_WAIT_TIMEOUT
+update innodb_bug52663 set count = count + 1 where what = 'total' and id = 0;
+select * from innodb_bug52663;
+
+connection default;
+commit;
+
+connection addconroot;
+update innodb_bug52663 set count = count + 1 where what = 'total' and id = 0;
+commit;
+select * from innodb_bug52663;
+
+connection default;
+select * from innodb_bug52663;
+drop table innodb_bug52663;

=== modified file 'storage/innobase/row/row0sel.c'
--- a/storage/innobase/row/row0sel.c	2010-03-15 08:17:31 +0000
+++ b/storage/innobase/row/row0sel.c	2010-04-26 10:27:25 +0000
@@ -3956,6 +3956,7 @@ no_gap_lock:
 		case DB_LOCK_WAIT:
 			if (UNIV_LIKELY(prebuilt->row_read_type
 					!= ROW_READ_TRY_SEMI_CONSISTENT)
+			    || unique_search
 			    || index != clust_index) {
 
 				goto lock_wait_or_error;

=== modified file 'storage/innodb_plugin/ChangeLog'
--- a/storage/innodb_plugin/ChangeLog	2010-04-22 09:33:42 +0000
+++ b/storage/innodb_plugin/ChangeLog	2010-04-26 10:27:25 +0000
@@ -1,3 +1,9 @@
+2010-04-26	The InnoDB Team
+
+	* row/row0sel.c:
+	Fix Bug#52663 Lost update incrementing column value under
+	READ COMMITTED isolation level
+
 2010-04-22	The InnoDB Team
 
 	* include/dict0boot.h, dict/dict0boot.c:

=== modified file 'storage/innodb_plugin/row/row0sel.c'
--- a/storage/innodb_plugin/row/row0sel.c	2010-03-31 07:49:08 +0000
+++ b/storage/innodb_plugin/row/row0sel.c	2010-04-26 10:27:25 +0000
@@ -4027,6 +4027,7 @@ no_gap_lock:
 		case DB_LOCK_WAIT:
 			if (UNIV_LIKELY(prebuilt->row_read_type
 					!= ROW_READ_TRY_SEMI_CONSISTENT)
+			    || unique_search
 			    || index != clust_index) {
 
 				goto lock_wait_or_error;

Attachment: [text/bzr-bundle] bzr/marko.makela@oracle.com-20100426105215-2e9nzq8z0nfwxjky.bundle
Thread
bzr push into mysql-5.1-innodb branch (marko.makela:3418) marko.makela26 Apr