drop table if exists t1;
create table t1(a int primary key, b int, c int, unique(b)) engine = ndb;
insert into t1 values (2,2,2);
insert into t1 values (3,3,3);
insert into t1 values (4,4,4);
begin;
insert into t1 values (1,1,1);
begin;
update t1 set c = 2 where b = 1;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
rollback;
rollback;
drop table t1;
create table t1(a int primary key, b int, c int, key(b)) engine = ndb;
insert into t1 values (2,2,2);
insert into t1 values (3,3,3);
insert into t1 values (4,4,4);
begin;
insert into t1 values (1,1,1);
begin;
update t1 set c = 2 where b = 1;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
rollback;
rollback;
drop table t1;
--con1
create table t1(a int primary key, b int, c int, key(b)) engine = ndb;
insert into t1 values (1,1,1);
insert into t1 values (2,2,2);
insert into t1 values (3,3,3);
insert into t1 values (4,4,4);
begin;
update t1 set c = 10 where a = 1;
update t1 set c = 20 where a = 1;
update t1 set c = 30 where a = 1;
--con1 c=30
select * from t1 where b >= 1 order by b;
a	b	c
1	1	30
2	2	2
3	3	3
4	4	4
--con2 c=1
select * from t1 where b >= 1 order by b;
a	b	c
1	1	1
2	2	2
3	3	3
4	4	4
--con1
delete from t1 where a = 1;
--con1 c=none
select * from t1 where b >= 1 order by b;
a	b	c
2	2	2
3	3	3
4	4	4
--con2 c=1
select * from t1 where b >= 1 order by b;
a	b	c
1	1	1
2	2	2
3	3	3
4	4	4
--con1
commit;
--con1 c=none
select * from t1 where b >= 1 order by b;
a	b	c
2	2	2
3	3	3
4	4	4
--con2 c=none
select * from t1 where b >= 1 order by b;
a	b	c
2	2	2
3	3	3
4	4	4
--con1
begin;
insert into t1 values (1,1,1);
update t1 set c = 10 where a = 1;
update t1 set c = 20 where a = 1;
update t1 set c = 30 where a = 1;
--con1 c=30
select * from t1 where b >= 1 order by b;
a	b	c
1	1	30
2	2	2
3	3	3
4	4	4
--con2 c=none
select * from t1 where b >= 1 order by b;
a	b	c
2	2	2
3	3	3
4	4	4
drop table t1;
