Commit 9e88b83b authored by davi@endora.local's avatar davi@endora.local

Merge darnaut@bk-internal.mysql.com:/home/bk/mysql-5.1-runtime

into  endora.local:/Users/davi/mysql/mysql-5.1-runtime
parents 42e65481 d2a3ed8d
...@@ -55,6 +55,23 @@ flush tables with read lock; ...@@ -55,6 +55,23 @@ flush tables with read lock;
insert into t2 values(1); insert into t2 values(1);
unlock tables; unlock tables;
drop table t1, t2; drop table t1, t2;
drop table if exists t1, t2;
set session low_priority_updates=1;
create table t1 (a int);
create table t2 (b int);
lock tables t1 write;
flush tables with read lock;
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
unlock tables;
lock tables t1 read, t2 write;
flush tables with read lock;
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
unlock tables;
lock tables t1 read;
flush tables with read lock;
unlock tables;
drop table t1, t2;
set session low_priority_updates=default;
End of 5.0 tests End of 5.0 tests
set @old_general_log= @@general_log; set @old_general_log= @@general_log;
set @old_read_only= @@read_only; set @old_read_only= @@read_only;
......
...@@ -133,6 +133,37 @@ disconnect con3; ...@@ -133,6 +133,37 @@ disconnect con3;
connection default; connection default;
drop table t1, t2; drop table t1, t2;
#
# Bug#32528 Global read lock with a low priority write lock causes a server crash
#
--disable_warnings
drop table if exists t1, t2;
--enable_warnings
set session low_priority_updates=1;
create table t1 (a int);
create table t2 (b int);
lock tables t1 write;
--error ER_LOCK_OR_ACTIVE_TRANSACTION
flush tables with read lock;
unlock tables;
lock tables t1 read, t2 write;
--error ER_LOCK_OR_ACTIVE_TRANSACTION
flush tables with read lock;
unlock tables;
lock tables t1 read;
flush tables with read lock;
unlock tables;
drop table t1, t2;
set session low_priority_updates=default;
--echo End of 5.0 tests --echo End of 5.0 tests
# #
......
...@@ -6412,7 +6412,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables, ...@@ -6412,7 +6412,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables,
for (; lock_p < end_p; lock_p++) for (; lock_p < end_p; lock_p++)
{ {
if ((*lock_p)->type == TL_WRITE) if ((*lock_p)->type >= TL_WRITE_ALLOW_WRITE)
{ {
my_error(ER_LOCK_OR_ACTIVE_TRANSACTION, MYF(0)); my_error(ER_LOCK_OR_ACTIVE_TRANSACTION, MYF(0));
return 1; return 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment