mariadb/mysql-test/t/create_delayed.test
Michael Widenius 396f4d62c6 Fix for MDEV-4009: main.delayed sporadically fails with "query 'REPLACE DELAYED t1 VALUES (5)' failed: 1317: Query execution was interrupted"
- Fixed broadcast without a proper mutex
- Don't break existing locks if we are just testing if we can get the lock

mysql-test/r/create_delayed.result:
  Added test case for failures with INSERT DELAYED with CREATE and DROP TABLE
mysql-test/t/create_delayed.test:
  Added test case for failures with INSERT DELAYED with CREATE and DROP TABLE
sql/mdl.cc:
  Don't break existing locks for timeout=0 (ie, just check if there are conflicting locks).
  This fixed the bug that INSERT DELAYED didn't work properly with CREATE TABLE
sql/sql_base.cc:
  One neads to hold the mutex before doing a mysql_cond_broadcast()
  This fixed the bug that INSERT DELAYED didn't work properly with DROP TABLE
sql/sql_insert.cc:
  Protect setting of mysys_var->current_mutex.
2013-01-10 23:40:18 +02:00

34 lines
602 B
Text

#
# Ensure that INSERT DELAYED works with CREATE TABLE on existing table
#
-- source include/big_test.inc
--disable_warnings
drop table if exists t1;
--enable_warnings
--disable_query_log
--disable_result_log
--let $run=1000
--echo Starting test
while ($run)
{
# --echo # $run attempts left...
CREATE TABLE t1 ( f1 INTEGER AUTO_INCREMENT, PRIMARY KEY (f1)) ENGINE=MyISAM;
INSERT DELAYED t1 VALUES (4);
--error ER_TABLE_EXISTS_ERROR
CREATE TABLE t1 AS SELECT 1 AS f1;
REPLACE DELAYED t1 VALUES (5);
DROP TABLE t1;
--dec $run
}
--enable_query_log
--enable_result_log
--echo # All done