mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 05:52:27 +01:00
29f0dcb563
* Finished Monty and Jani's merge * Some InnoDB tests still fail (because it's old xtradb code run against newer testsuite). They are expected to go after mergning with the latest xtradb.
68 lines
1.8 KiB
Text
68 lines
1.8 KiB
Text
-- source include/not_embedded.inc
|
|
-- source include/have_innodb.inc
|
|
|
|
--disable_warnings
|
|
drop table if exists t1,t2;
|
|
--enable_warnings
|
|
|
|
# basic tests of semi-consistent reads
|
|
|
|
connect (a,localhost,root,,);
|
|
connect (b,localhost,root,,);
|
|
connection a;
|
|
set binlog_format=mixed;
|
|
set session transaction isolation level repeatable read;
|
|
create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
|
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7);
|
|
set autocommit=0;
|
|
# this should lock the entire table
|
|
select * from t1 where a=3 lock in share mode;
|
|
connection b;
|
|
set binlog_format=mixed;
|
|
set session transaction isolation level repeatable read;
|
|
set autocommit=0;
|
|
-- error ER_LOCK_WAIT_TIMEOUT
|
|
update t1 set a=10 where a=5;
|
|
connection a;
|
|
commit;
|
|
connection b;
|
|
# perform a semi-consisent read (and unlock non-matching rows)
|
|
set session transaction isolation level read committed;
|
|
update t1 set a=10 where a=5;
|
|
connection a;
|
|
-- error ER_LOCK_WAIT_TIMEOUT
|
|
select * from t1 where a=2 for update;
|
|
# this should lock the records (1),(2)
|
|
select * from t1 where a=2 limit 1 for update;
|
|
connection b;
|
|
# semi-consistent read will skip non-matching locked rows a=1, a=2
|
|
update t1 set a=11 where a=6;
|
|
-- error ER_LOCK_WAIT_TIMEOUT
|
|
update t1 set a=12 where a=2;
|
|
-- error ER_LOCK_WAIT_TIMEOUT
|
|
update t1 set a=13 where a=1;
|
|
connection a;
|
|
commit;
|
|
connection b;
|
|
update t1 set a=14 where a=1;
|
|
commit;
|
|
connection a;
|
|
select * from t1;
|
|
drop table t1;
|
|
|
|
connection default;
|
|
disconnect a;
|
|
disconnect b;
|
|
|
|
# Bug 39320
|
|
create table t1 (a int, b int) engine=myisam;
|
|
create table t2 (c int, d int, key (c)) engine=innodb;
|
|
insert into t1 values (1,1);
|
|
insert into t2 values (1,2);
|
|
connect (a,localhost,root,,);
|
|
connection a;
|
|
set session transaction isolation level read committed;
|
|
delete from t1 using t1 join t2 on t1.a = t2.c where t2.d in (1);
|
|
connection default;
|
|
disconnect a;
|
|
drop table t1, t2;
|