1
-- source include/not_embedded.inc
2
-- source include/have_innodb.inc
5
drop table if exists t1;
8
# basic tests of semi-consistent reads
10
connect (a,localhost,root,,);
11
connect (b,localhost,root,,);
13
set binlog_format=mixed;
14
set session transaction isolation level repeatable read;
15
create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
16
insert into t1 values (1),(2),(3),(4),(5),(6),(7);
18
# this should lock the entire table
19
select * from t1 where a=3 lock in share mode;
21
set binlog_format=mixed;
22
set session transaction isolation level repeatable read;
24
-- error ER_LOCK_WAIT_TIMEOUT
25
update t1 set a=10 where a=5;
29
# perform a semi-consisent read (and unlock non-matching rows)
30
set session transaction isolation level read committed;
31
update t1 set a=10 where a=5;
33
-- error ER_LOCK_WAIT_TIMEOUT
34
select * from t1 where a=2 for update;
35
# this should lock the records (1),(2)
36
select * from t1 where a=2 limit 1 for update;
38
# semi-consistent read will skip non-matching locked rows a=1, a=2
39
update t1 set a=11 where a=6;
40
-- error ER_LOCK_WAIT_TIMEOUT
41
update t1 set a=12 where a=2;
42
-- error ER_LOCK_WAIT_TIMEOUT
43
update t1 set a=13 where a=1;
47
update t1 set a=14 where a=1;