#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.dimov | 4 May |