summaryrefslogtreecommitdiff
path: root/mysql-test/t/sp-threads.test
diff options
context:
space:
mode:
authordlenev@brandersnatch.localdomain <>2005-04-15 20:31:47 +0400
committerdlenev@brandersnatch.localdomain <>2005-04-15 20:31:47 +0400
commit6b0b4734d90efd3c98d7f7ad9584f0aa404ba52b (patch)
treecfeca0850da684db9d6d61780d75e68485f053ec /mysql-test/t/sp-threads.test
parent32221d9b9e17867e5b2596e7ae36b0aa08dcc6fb (diff)
downloadmariadb-git-6b0b4734d90efd3c98d7f7ad9584f0aa404ba52b.tar.gz
Fix for bug #9486 "Can't perform multi-update in stored procedure".
New more SP-locking friendly approach to handling locks in multi-update. Now we mark all tables of multi-update as needing write lock at parsing stage and if possible downgrade lock at execution stage (For its work SP-locking mechanism needs to know all lock types right after parsing stage).
Diffstat (limited to 'mysql-test/t/sp-threads.test')
-rw-r--r--mysql-test/t/sp-threads.test31
1 files changed, 31 insertions, 0 deletions
diff --git a/mysql-test/t/sp-threads.test b/mysql-test/t/sp-threads.test
index 0ced60a610f..608ac3e2ee7 100644
--- a/mysql-test/t/sp-threads.test
+++ b/mysql-test/t/sp-threads.test
@@ -55,6 +55,37 @@ drop procedure bug4934;
#
+# BUG #9486 "Can't perform multi-update in stored procedure"
+#
+--disable_warnings
+drop procedure if exists bug9486;
+drop table if exists t1, t2;
+--enable_warnings
+create table t1 (id1 int, val int);
+create table t2 (id2 int);
+
+create procedure bug9486()
+ update t1, t2 set val= 1 where id1=id2;
+call bug9486();
+# Let us check that SP invocation requires write lock for t2.
+connection con2root;
+lock tables t2 write;
+connection con1root;
+send call bug9486();
+connection con2root;
+--sleep 2
+# There should be call statement in locked state.
+--replace_column 1 # 6 #
+show processlist;
+unlock tables;
+connection con1root;
+reap;
+
+drop procedure bug9486;
+drop table t1, t2;
+
+
+#
# BUG#NNNN: New bug synopsis
#
#--disable_warnings