merge
This commit is contained in:
commit
c37250dd8c
@ -310,4 +310,16 @@ a b
|
|||||||
2 2
|
2 2
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set global low_priority_updates = @old_delayed_updates;
|
set global low_priority_updates = @old_delayed_updates;
|
||||||
|
#
|
||||||
|
# Bug #47682 strange behaviour of INSERT DELAYED
|
||||||
|
#
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
CREATE TABLE t1 (f1 integer);
|
||||||
|
CREATE TABLE t2 (f1 integer);
|
||||||
|
FLUSH TABLES WITH READ LOCK;
|
||||||
|
LOCK TABLES t1 READ;
|
||||||
|
INSERT DELAYED INTO t2 VALUES (1);
|
||||||
|
ERROR HY000: Can't execute the query because you have a conflicting read lock
|
||||||
|
UNLOCK TABLES;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -328,4 +328,26 @@ drop table t1;
|
|||||||
|
|
||||||
set global low_priority_updates = @old_delayed_updates;
|
set global low_priority_updates = @old_delayed_updates;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #47682 strange behaviour of INSERT DELAYED
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 integer);
|
||||||
|
CREATE TABLE t2 (f1 integer);
|
||||||
|
|
||||||
|
FLUSH TABLES WITH READ LOCK;
|
||||||
|
LOCK TABLES t1 READ;
|
||||||
|
|
||||||
|
--error ER_CANT_UPDATE_WITH_READLOCK
|
||||||
|
INSERT DELAYED INTO t2 VALUES (1);
|
||||||
|
|
||||||
|
UNLOCK TABLES;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -500,6 +500,22 @@ bool open_and_lock_for_insert_delayed(THD *thd, TABLE_LIST *table_list)
|
|||||||
DBUG_ENTER("open_and_lock_for_insert_delayed");
|
DBUG_ENTER("open_and_lock_for_insert_delayed");
|
||||||
|
|
||||||
#ifndef EMBEDDED_LIBRARY
|
#ifndef EMBEDDED_LIBRARY
|
||||||
|
if (thd->locked_tables && thd->global_read_lock)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
If this connection has the global read lock, the handler thread
|
||||||
|
will not be able to lock the table. It will wait for the global
|
||||||
|
read lock to go away, but this will never happen since the
|
||||||
|
connection thread will be stuck waiting for the handler thread
|
||||||
|
to open and lock the table.
|
||||||
|
If we are not in locked tables mode, INSERT will seek protection
|
||||||
|
against the global read lock (and fail), thus we will only get
|
||||||
|
to this point in locked tables mode.
|
||||||
|
*/
|
||||||
|
my_error(ER_CANT_UPDATE_WITH_READLOCK, MYF(0));
|
||||||
|
DBUG_RETURN(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
if (delayed_get_table(thd, table_list))
|
if (delayed_get_table(thd, table_list))
|
||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user