diff options
author | Konstantin Osipov <kostja@sun.com> | 2009-11-20 22:51:12 +0300 |
---|---|---|
committer | Konstantin Osipov <kostja@sun.com> | 2009-11-20 22:51:12 +0300 |
commit | 1ee8a58882daa8f5ba93bbc6032f0201ed4004d9 (patch) | |
tree | eb1d7af310172485cbf7985efd1057955f7a9385 /mysql-test/r/view.result | |
parent | 948ee7e5d9aa45970a3ba7208860982d093f540f (diff) | |
download | mariadb-git-1ee8a58882daa8f5ba93bbc6032f0201ed4004d9.tar.gz |
Backport of:
------------------------------------------------------------
revno: 2476.784.3
committer: davi@moksha.local
timestamp: Tue 2007-10-02 21:27:31 -0300
message:
Bug#25858 Some DROP TABLE under LOCK TABLES can cause deadlocks
When a client (connection) holds a lock on a table and attempts to
drop (obtain a exclusive lock) on a second table that is already
held by a second client and the second client then attempts to
drop the table that is held by the first client, leads to a
circular wait deadlock. This scenario is very similar to trying to
drop (or rename) a table while holding read locks and are
correctly forbidden.
The solution is to allow a drop table operation to continue only
if the table being dropped is write (exclusively) locked, or if
the table is temporary, or if the client is not holding any
locks. Using this scheme prevents the creation of a circular
chain in which each client is waiting for one table that the
next client in the chain is holding.
This is incompatible change, as can be seen by number of tests
cases that needed to be fixed, but is consistent with respect to
behavior of the different scenarios in which the circular wait
might happen.
Diffstat (limited to 'mysql-test/r/view.result')
-rw-r--r-- | mysql-test/r/view.result | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result index 69bcf349f51..2df2b0bafa6 100644 --- a/mysql-test/r/view.result +++ b/mysql-test/r/view.result @@ -1104,6 +1104,9 @@ select * from t2; ERROR HY000: Table 't2' was not locked with LOCK TABLES drop view v1; drop table t1, t2; +ERROR HY000: Table 't1' was locked with a READ lock and can't be updated +unlock tables; +drop table t1, t2; create table t1 (a int); create view v1 as select * from t1 where a < 2 with check option; insert into v1 values(1); |