Commit 9817d93e authored by davi@endora.local's avatar davi@endora.local
Browse files

Merge endora.local:/Users/davi/mysql/bugs/32528-5.0

into  endora.local:/Users/davi/mysql/mysql-5.0-runtime
parents d7a7f2f1 351c4741
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -55,3 +55,20 @@ flush tables with read lock;
insert into t2 values(1);
unlock tables;
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;
+31 −0
Original line number Diff line number Diff line
@@ -133,4 +133,35 @@ disconnect con3;
connection default;
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;

# End of 5.0 tests
+1 −1
Original line number Diff line number Diff line
@@ -7054,7 +7054,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables,

        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));
            return 1;