diff options
Diffstat (limited to 'mysql-test/suite/maria/maria_notembedded.test')
-rw-r--r-- | mysql-test/suite/maria/maria_notembedded.test | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/mysql-test/suite/maria/maria_notembedded.test b/mysql-test/suite/maria/maria_notembedded.test new file mode 100644 index 00000000..70c04073 --- /dev/null +++ b/mysql-test/suite/maria/maria_notembedded.test @@ -0,0 +1,101 @@ +# Tests which cannot be run in embedded server. + +-- source include/not_embedded.inc +-- source include/have_maria.inc + +call mtr.add_suppression("Deadlock found when trying to get lock; try restarting transaction"); + +let $default_engine=`select @@session.default_storage_engine`; +set session default_storage_engine=aria; + +# Verify that INSERT DELAYED is disabled only for transactional tables +# ("embedded" server translates them to plain INSERT) + +create table t1 (a int) row_format=page; +--error ER_DELAYED_NOT_SUPPORTED +insert delayed into t1 values(1); +drop table t1; +create table t1 (a int) row_format=page transactional=0; +insert delayed into t1 values(1); +flush table t1; +select * from t1; +select count(*) from t1; +drop table t1; +create table t1 (a int) row_format=dynamic; +insert delayed into t1 values(1); +flush table t1; +select * from t1; +select count(*) from t1; +drop table t1; + +# This cannot be run in embedded server, see BUG#40661, because +# mysqltest runs "send" commands in separate OS thread. +# +# an example of a deadlock +# +create table t1 (a int unique) transactional=1; +insert t1 values (1); + +lock table t1 write concurrent; +insert t1 values (2); + +connect(con_a,localhost,root,,); +lock table t1 write concurrent; +insert t1 values (3); +send insert t1 values (2); + +connect(con_b,localhost,root,,); +lock table t1 write concurrent; +insert t1 values (4); +send insert t1 values (3); + +connect(con_c,localhost,root,,); +lock table t1 write concurrent; +insert t1 values (5); +send insert t1 values (4); + +connect(con_d,localhost,root,,); +lock table t1 write concurrent; +insert t1 values (6); +send insert t1 values (5); + +connection default; +let $wait_condition=select count(*) = 4 from information_schema.processlist where state="waiting for a resource"; +--source include/wait_condition.inc +--error ER_LOCK_DEADLOCK +insert t1 values (6); +unlock tables; + +connection con_a; +--error ER_DUP_ENTRY +reap; +unlock tables; +disconnect con_a; + +connection con_b; +--error ER_DUP_ENTRY +reap; +unlock tables; +disconnect con_b; + +connection con_c; +--error ER_DUP_ENTRY +reap; +unlock tables; +disconnect con_c; + +connection con_d; +--error ER_DUP_ENTRY +reap; +unlock tables; +disconnect con_d; + +connection default; +check table t1; +drop table t1; + +--disable_result_log +--disable_query_log +eval set session default_storage_engine=$default_engine; +--enable_result_log +--enable_query_log |