summaryrefslogtreecommitdiff
path: root/mysql-test/t/tablelock.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/t/tablelock.test')
-rw-r--r--mysql-test/t/tablelock.test62
1 files changed, 62 insertions, 0 deletions
diff --git a/mysql-test/t/tablelock.test b/mysql-test/t/tablelock.test
index 5ac93f09ac1..0152a014855 100644
--- a/mysql-test/t/tablelock.test
+++ b/mysql-test/t/tablelock.test
@@ -62,3 +62,65 @@ drop table t1;
unlock tables;
# End of 5.0 tests
+
+--echo #
+--echo # Bug#19988193 ASSERTION `(*TABLES)->REGINFO.LOCK_TYPE >= TL_READ'
+--echo # FAILED IN LOCK_EXTERNAL
+--echo #
+
+CREATE TABLE t1(a INT);
+CREATE PROCEDURE p1() CREATE VIEW v1 AS SELECT * FROM t1;
+--echo
+--echo # Create trigger calling proc creating view, when view DOES NOT
+--echo # exist already
+CREATE TRIGGER trg_p1_t1 AFTER INSERT ON t1 FOR EACH ROW CALL p1();
+--echo
+--echo # Verify that it is possible to lock table
+LOCK TABLES t1 WRITE;
+UNLOCK TABLES;
+--echo
+--echo # Fails, as expected
+--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
+INSERT INTO t1 VALUES (1);
+--echo
+--echo # Make sure v1 already exists
+CREATE VIEW v1 AS SELECT a+1 FROM t1;
+--echo
+--echo # Verify that it is possible to lock table
+LOCK TABLES t1 WRITE;
+UNLOCK TABLES;
+--echo
+--echo # Verify that we get the expected error when inserting into the table
+--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
+INSERT INTO t1 VALUES (1);
+--echo
+--echo # Cleanup
+DROP TRIGGER trg_p1_t1;
+DROP PROCEDURE p1;
+DROP VIEW v1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # Bug#21198646 ASSERTION FAILED: (*TABLES)->REGINFO.LOCK_TYPE >= TL_READ
+--echo # FILE LOCK.CC, LINE 356
+--echo #
+
+CREATE TABLE t2(a INT);
+
+--echo # Create procedure p1 invoking RENAME TABLE
+CREATE PROCEDURE p1() RENAME TABLE t2 TO t3;
+
+--echo # Create function f1 calling p1
+DELIMITER $;
+CREATE FUNCTION f1() RETURNS INT BEGIN CALL p1(); RETURN 1; END $
+DELIMITER ;$
+
+--echo # Invoke function f1 and verify that we get the expected error
+--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
+SELECT f1();
+
+--echo # Cleanup
+DROP PROCEDURE p1;
+DROP FUNCTION f1;
+DROP TABLE t2; \ No newline at end of file