summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/innodb/t/trigger.test
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--mysql-test/suite/innodb/t/trigger.test47
1 files changed, 47 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb/t/trigger.test b/mysql-test/suite/innodb/t/trigger.test
new file mode 100644
index 00000000..fe0bab21
--- /dev/null
+++ b/mysql-test/suite/innodb/t/trigger.test
@@ -0,0 +1,47 @@
+--source include/have_innodb.inc
+--source include/count_sessions.inc
+
+CREATE TABLE t1 (a INT) ENGINE=InnoDB;
+CREATE TABLE t2 (b INT) ENGINE=InnoDB;
+CREATE TABLE t3 (c INT) ENGINE=InnoDB;
+
+--delimiter $$
+CREATE TRIGGER tr BEFORE INSERT ON t3 FOR EACH ROW BEGIN SAVEPOINT sv; INSERT INTO t2 VALUES (0); END $$
+--delimiter ;
+
+START TRANSACTION;
+DELETE FROM t1;
+
+connect (con1,localhost,root,,test);
+START TRANSACTION;
+INSERT INTO t2 VALUES (2);
+UPDATE t2 SET b = b+1;
+
+--send
+INSERT INTO t1 VALUES (1);
+
+connection default;
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = 'update' and info = 'INSERT INTO t1 VALUES (1)'
+--source include/wait_condition.inc
+
+--error ER_LOCK_DEADLOCK
+INSERT INTO t3 VALUES (2);
+COMMIT;
+
+connection con1;
+reap;
+COMMIT;
+disconnect con1;
+
+connection default;
+SELECT * FROM t1;
+SELECT * FROM t2;
+SELECT * FROM t3;
+
+DROP TABLE t1, t2, t3;
+--error ER_TRG_DOES_NOT_EXIST
+DROP TRIGGER tr;
+
+--source include/wait_until_count_sessions.inc