Loading mysql-test/r/ndb_lock.result +86 −0 Original line number Diff line number Diff line Loading @@ -63,3 +63,89 @@ pk u o 5 5 5 insert into t1 values (1,1,1); drop table t1; create table t1 (x integer not null primary key, y varchar(32), z integer, key(z)) engine = ndb; insert into t1 values (1,'one',1), (2,'two',2),(3,"three",3); begin; select * from t1 where x = 1 for update; x y z 1 one 1 begin; select * from t1 where x = 2 for update; x y z 2 two 2 select * from t1 where x = 1 for update; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; select * from t1 where y = 'one' or y = 'three' for update; x y z 3 three 3 1 one 1 begin; select * from t1 where x = 2 for update; x y z 2 two 2 select * from t1 where x = 1 for update; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; select * from t1 where z > 1 and z < 3 for update; x y z 2 two 2 begin; select * from t1 where x = 1 for update; x y z 1 one 1 select * from t1 where x = 2 for update; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; select * from t1 where x = 1 lock in share mode; x y z 1 one 1 begin; select * from t1 where x = 1 lock in share mode; x y z 1 one 1 select * from t1 where x = 2 for update; x y z 2 two 2 select * from t1 where x = 1 for update; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; select * from t1 where y = 'one' or y = 'three' lock in share mode; x y z 3 three 3 1 one 1 begin; select * from t1 where y = 'one' lock in share mode; x y z 1 one 1 select * from t1 where x = 2 for update; x y z 2 two 2 select * from t1 where x = 1 for update; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; select * from t1 where z > 1 and z < 3 lock in share mode; x y z 2 two 2 begin; select * from t1 where z = 1 lock in share mode; x y z 1 one 1 select * from t1 where x = 1 for update; x y z 1 one 1 select * from t1 where x = 2 for update; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; drop table t1; mysql-test/r/ndb_truncate.result +16 −7 Original line number Diff line number Diff line DROP TABLE IF EXISTS t2; CREATE TABLE t2 ( a bigint unsigned NOT NULL PRIMARY KEY, DROP TABLE IF EXISTS t1, t2; CREATE TABLE t1 ( a bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, b int unsigned not null, c int unsigned ) engine=ndbcluster; select count(*) from t2; select count(*) from t1; count(*) 5000 truncate table t2; select count(*) from t2; select * from t1 order by a limit 2; a b c 1 509 2500 2 510 7 truncate table t1; select count(*) from t1; count(*) 0 drop table t2; insert into t1 values(NULL,1,1),(NULL,2,2); select * from t1 order by a; a b c 1 1 1 2 2 2 drop table t1; mysql-test/t/ndb_lock.test +111 −0 Original line number Diff line number Diff line Loading @@ -69,4 +69,115 @@ insert into t1 values (1,1,1); drop table t1; # Lock for update create table t1 (x integer not null primary key, y varchar(32), z integer, key(z)) engine = ndb; insert into t1 values (1,'one',1), (2,'two',2),(3,"three",3); # PK access connection con1; begin; select * from t1 where x = 1 for update; connection con2; begin; select * from t1 where x = 2 for update; --error 1205 select * from t1 where x = 1 for update; rollback; connection con1; commit; # table scan connection con1; begin; select * from t1 where y = 'one' or y = 'three' for update; connection con2; begin; # Have to check with pk access here since scans take locks on # all rows and then release them in chunks select * from t1 where x = 2 for update; --error 1205 select * from t1 where x = 1 for update; rollback; connection con1; commit; # index scan connection con1; begin; select * from t1 where z > 1 and z < 3 for update; connection con2; begin; # Have to check with pk access here since scans take locks on # all rows and then release them in chunks select * from t1 where x = 1 for update; --error 1205 select * from t1 where x = 2 for update; rollback; connection con1; commit; # share locking # PK access connection con1; begin; select * from t1 where x = 1 lock in share mode; connection con2; begin; select * from t1 where x = 1 lock in share mode; select * from t1 where x = 2 for update; --error 1205 select * from t1 where x = 1 for update; rollback; connection con1; commit; # table scan connection con1; begin; select * from t1 where y = 'one' or y = 'three' lock in share mode; connection con2; begin; select * from t1 where y = 'one' lock in share mode; # Have to check with pk access here since scans take locks on # all rows and then release them in chunks select * from t1 where x = 2 for update; --error 1205 select * from t1 where x = 1 for update; rollback; connection con1; commit; # index scan connection con1; begin; select * from t1 where z > 1 and z < 3 lock in share mode; connection con2; begin; select * from t1 where z = 1 lock in share mode; # Have to check with pk access here since scans take locks on # all rows and then release them in chunks select * from t1 where x = 1 for update; --error 1205 select * from t1 where x = 2 for update; rollback; connection con1; commit; drop table t1; # End of 4.1 tests mysql-test/t/ndb_truncate.test +14 −9 Original line number Diff line number Diff line Loading @@ -2,12 +2,11 @@ -- source include/not_embedded.inc --disable_warnings DROP TABLE IF EXISTS t2; DROP TABLE IF EXISTS t1, t2; --enable_warnings CREATE TABLE t2 ( a bigint unsigned NOT NULL PRIMARY KEY, CREATE TABLE t1 ( a bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, b int unsigned not null, c int unsigned ) engine=ndbcluster; Loading @@ -20,17 +19,23 @@ let $1=500; disable_query_log; while ($1) { eval insert into t2 values($1*10, $1+9, 5*$1), ($1*10+1, $1+10, 7),($1*10+2, $1+10, 7*$1), ($1*10+3, $1+10, 10+$1), ($1*10+4, $1+10, 70*$1), ($1*10+5, $1+10, 7), ($1*10+6, $1+10, 9), ($1*10+7, $1+299, 899), ($1*10+8, $1+10, 12), ($1*10+9, $1+10, 14*$1); eval insert into t1 values(NULL, $1+9, 5*$1), (NULL, $1+10, 7),(NULL, $1+10, 7*$1), (NULL, $1+10, 10+$1), (NULL, $1+10, 70*$1), (NULL, $1+10, 7), (NULL, $1+10, 9), (NULL, $1+299, 899), (NULL, $1+10, 12), (NULL, $1+10, 14*$1); dec $1; } enable_query_log; select count(*) from t2; select count(*) from t1; select * from t1 order by a limit 2; truncate table t1; select count(*) from t1; truncate table t2; insert into t1 values(NULL,1,1),(NULL,2,2); select count(*) from t2; select * from t1 order by a; drop table t2; drop table t1; # End of 4.1 tests ndb/include/ndbapi/NdbIndexScanOperation.hpp +4 −3 Original line number Diff line number Diff line Loading @@ -45,14 +45,15 @@ public: NdbResultSet* readTuples(LockMode = LM_Read, Uint32 batch = 0, Uint32 parallel = 0, bool order_by = false); bool order_by = false, bool keyinfo = false); inline NdbResultSet* readTuples(int parallell){ return readTuples(LM_Read, 0, parallell, false); return readTuples(LM_Read, 0, parallell); } inline NdbResultSet* readTuplesExclusive(int parallell = 0){ return readTuples(LM_Exclusive, 0, parallell, false); return readTuples(LM_Exclusive, 0, parallell); } /** Loading Loading
mysql-test/r/ndb_lock.result +86 −0 Original line number Diff line number Diff line Loading @@ -63,3 +63,89 @@ pk u o 5 5 5 insert into t1 values (1,1,1); drop table t1; create table t1 (x integer not null primary key, y varchar(32), z integer, key(z)) engine = ndb; insert into t1 values (1,'one',1), (2,'two',2),(3,"three",3); begin; select * from t1 where x = 1 for update; x y z 1 one 1 begin; select * from t1 where x = 2 for update; x y z 2 two 2 select * from t1 where x = 1 for update; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; select * from t1 where y = 'one' or y = 'three' for update; x y z 3 three 3 1 one 1 begin; select * from t1 where x = 2 for update; x y z 2 two 2 select * from t1 where x = 1 for update; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; select * from t1 where z > 1 and z < 3 for update; x y z 2 two 2 begin; select * from t1 where x = 1 for update; x y z 1 one 1 select * from t1 where x = 2 for update; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; select * from t1 where x = 1 lock in share mode; x y z 1 one 1 begin; select * from t1 where x = 1 lock in share mode; x y z 1 one 1 select * from t1 where x = 2 for update; x y z 2 two 2 select * from t1 where x = 1 for update; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; select * from t1 where y = 'one' or y = 'three' lock in share mode; x y z 3 three 3 1 one 1 begin; select * from t1 where y = 'one' lock in share mode; x y z 1 one 1 select * from t1 where x = 2 for update; x y z 2 two 2 select * from t1 where x = 1 for update; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; begin; select * from t1 where z > 1 and z < 3 lock in share mode; x y z 2 two 2 begin; select * from t1 where z = 1 lock in share mode; x y z 1 one 1 select * from t1 where x = 1 for update; x y z 1 one 1 select * from t1 where x = 2 for update; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; commit; drop table t1;
mysql-test/r/ndb_truncate.result +16 −7 Original line number Diff line number Diff line DROP TABLE IF EXISTS t2; CREATE TABLE t2 ( a bigint unsigned NOT NULL PRIMARY KEY, DROP TABLE IF EXISTS t1, t2; CREATE TABLE t1 ( a bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, b int unsigned not null, c int unsigned ) engine=ndbcluster; select count(*) from t2; select count(*) from t1; count(*) 5000 truncate table t2; select count(*) from t2; select * from t1 order by a limit 2; a b c 1 509 2500 2 510 7 truncate table t1; select count(*) from t1; count(*) 0 drop table t2; insert into t1 values(NULL,1,1),(NULL,2,2); select * from t1 order by a; a b c 1 1 1 2 2 2 drop table t1;
mysql-test/t/ndb_lock.test +111 −0 Original line number Diff line number Diff line Loading @@ -69,4 +69,115 @@ insert into t1 values (1,1,1); drop table t1; # Lock for update create table t1 (x integer not null primary key, y varchar(32), z integer, key(z)) engine = ndb; insert into t1 values (1,'one',1), (2,'two',2),(3,"three",3); # PK access connection con1; begin; select * from t1 where x = 1 for update; connection con2; begin; select * from t1 where x = 2 for update; --error 1205 select * from t1 where x = 1 for update; rollback; connection con1; commit; # table scan connection con1; begin; select * from t1 where y = 'one' or y = 'three' for update; connection con2; begin; # Have to check with pk access here since scans take locks on # all rows and then release them in chunks select * from t1 where x = 2 for update; --error 1205 select * from t1 where x = 1 for update; rollback; connection con1; commit; # index scan connection con1; begin; select * from t1 where z > 1 and z < 3 for update; connection con2; begin; # Have to check with pk access here since scans take locks on # all rows and then release them in chunks select * from t1 where x = 1 for update; --error 1205 select * from t1 where x = 2 for update; rollback; connection con1; commit; # share locking # PK access connection con1; begin; select * from t1 where x = 1 lock in share mode; connection con2; begin; select * from t1 where x = 1 lock in share mode; select * from t1 where x = 2 for update; --error 1205 select * from t1 where x = 1 for update; rollback; connection con1; commit; # table scan connection con1; begin; select * from t1 where y = 'one' or y = 'three' lock in share mode; connection con2; begin; select * from t1 where y = 'one' lock in share mode; # Have to check with pk access here since scans take locks on # all rows and then release them in chunks select * from t1 where x = 2 for update; --error 1205 select * from t1 where x = 1 for update; rollback; connection con1; commit; # index scan connection con1; begin; select * from t1 where z > 1 and z < 3 lock in share mode; connection con2; begin; select * from t1 where z = 1 lock in share mode; # Have to check with pk access here since scans take locks on # all rows and then release them in chunks select * from t1 where x = 1 for update; --error 1205 select * from t1 where x = 2 for update; rollback; connection con1; commit; drop table t1; # End of 4.1 tests
mysql-test/t/ndb_truncate.test +14 −9 Original line number Diff line number Diff line Loading @@ -2,12 +2,11 @@ -- source include/not_embedded.inc --disable_warnings DROP TABLE IF EXISTS t2; DROP TABLE IF EXISTS t1, t2; --enable_warnings CREATE TABLE t2 ( a bigint unsigned NOT NULL PRIMARY KEY, CREATE TABLE t1 ( a bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, b int unsigned not null, c int unsigned ) engine=ndbcluster; Loading @@ -20,17 +19,23 @@ let $1=500; disable_query_log; while ($1) { eval insert into t2 values($1*10, $1+9, 5*$1), ($1*10+1, $1+10, 7),($1*10+2, $1+10, 7*$1), ($1*10+3, $1+10, 10+$1), ($1*10+4, $1+10, 70*$1), ($1*10+5, $1+10, 7), ($1*10+6, $1+10, 9), ($1*10+7, $1+299, 899), ($1*10+8, $1+10, 12), ($1*10+9, $1+10, 14*$1); eval insert into t1 values(NULL, $1+9, 5*$1), (NULL, $1+10, 7),(NULL, $1+10, 7*$1), (NULL, $1+10, 10+$1), (NULL, $1+10, 70*$1), (NULL, $1+10, 7), (NULL, $1+10, 9), (NULL, $1+299, 899), (NULL, $1+10, 12), (NULL, $1+10, 14*$1); dec $1; } enable_query_log; select count(*) from t2; select count(*) from t1; select * from t1 order by a limit 2; truncate table t1; select count(*) from t1; truncate table t2; insert into t1 values(NULL,1,1),(NULL,2,2); select count(*) from t2; select * from t1 order by a; drop table t2; drop table t1; # End of 4.1 tests
ndb/include/ndbapi/NdbIndexScanOperation.hpp +4 −3 Original line number Diff line number Diff line Loading @@ -45,14 +45,15 @@ public: NdbResultSet* readTuples(LockMode = LM_Read, Uint32 batch = 0, Uint32 parallel = 0, bool order_by = false); bool order_by = false, bool keyinfo = false); inline NdbResultSet* readTuples(int parallell){ return readTuples(LM_Read, 0, parallell, false); return readTuples(LM_Read, 0, parallell); } inline NdbResultSet* readTuplesExclusive(int parallell = 0){ return readTuples(LM_Exclusive, 0, parallell, false); return readTuples(LM_Exclusive, 0, parallell); } /** Loading