summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/maria/maria_notembedded.test
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--mysql-test/suite/maria/maria_notembedded.test101
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