List:Commits« Previous MessageNext Message »
From:vasil.dimov Date:May 4 2010 10:00am
Subject:bzr commit into mysql-trunk-innodb branch (vasil.dimov:3048)
View as plain text  
#At file:///usr/local/devel/bzrroot/server/mysql-trunk-innodb/ based on revid:vasil.dimov@stripped

 3048 Vasil Dimov	2010-05-04
      Merge from mysql-5.1-innodb:
      
        ------------------------------------------------------------
        revno: 3417
        revision-id: marko.makela@stripped
        parent: marko.makela@stripped
        committer: Marko M?kel? <marko.makela@stripped>
        branch nick: 5.1-innodb
        timestamp: Mon 2010-04-26 13:27:25 +0300
        message:
          row_search_for_mysql(): Never try semi-consistent read in unique searches.
          They are only useful in table scans. (Bug #52663)
        added:
          mysql-test/suite/innodb/r/innodb_bug52663.result innodb_bug52663.resu-20100426102328-fymyevkummgyc3gm-1
          mysql-test/suite/innodb/t/innodb_bug52663-master.opt innodb_bug52663maste-20100426102328-fymyevkummgyc3gm-2
          mysql-test/suite/innodb/t/innodb_bug52663.test innodb_bug52663.test-20100426102328-fymyevkummgyc3gm-3
          mysql-test/suite/innodb_plugin/r/innodb_bug52663.result innodb_bug52663.resu-20100426102328-fymyevkummgyc3gm-4
          mysql-test/suite/innodb_plugin/t/innodb_bug52663.test innodb_bug52663.test-20100426102328-fymyevkummgyc3gm-5
        modified:
          storage/innobase/row/row0sel.c 2@cee13dc7-1704-0410-992b-c9b4543f1246:trunk%2Frow%2Frow0sel.c
          storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
          storage/innodb_plugin/row/row0sel.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Frow%2Frow0sel.c
        ------------------------------------------------------------

    added:
      mysql-test/suite/innodb/r/innodb_bug52663.result
      mysql-test/suite/innodb/t/innodb_bug52663.test
    modified:
      storage/innobase/row/row0sel.c
=== 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-05-04 09:51: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.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-05-04 09:51: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-31 11:39:54 +0000
+++ b/storage/innobase/row/row0sel.c	2010-05-04 09:51: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/vasil.dimov@oracle.com-20100504095125-bntiicm626cnsvmj.bundle
Thread
bzr commit into mysql-trunk-innodb branch (vasil.dimov:3048) vasil.dimov4 May