mariadb/mysql-test/t/flush.test
unknown e971334ece Merge mysql.com:/home/hf/work/mysql-4.1-mrg
into  mysql.com:/home/hf/work/mysql-5.0-mrg


client/mysqltest.c:
  Auto merged
mysql-test/t/flush.test:
  Auto merged
mysql-test/t/flush_block_commit.test:
  Auto merged
mysql-test/t/innodb-deadlock.test:
  Auto merged
mysql-test/t/innodb-lock.test:
  Auto merged
mysql-test/t/lock_multi.test:
  Auto merged
mysql-test/t/rename.test:
  Auto merged
mysql-test/t/show_check.test:
  Auto merged
mysql-test/t/status.test:
  Auto merged
sql/item.cc:
  Auto merged
sql/protocol.h:
  Auto merged
sql-common/client.c:
  Auto merged
Makefile.am:
  merging
BitKeeper/deleted/.del-mysql_client.test:
  merging
include/mysql.h:
  SCCS merged
libmysql/libmysql.c:
  merging
libmysqld/lib_sql.cc:
  merging
mysql-test/r/order_by.result:
  SCCS merged
mysql-test/r/subselect.result:
  SCCS merged
mysql-test/t/order_by.test:
  merging
mysql-test/t/subselect.test:
  SCCS merged
sql/item_subselect.cc:
  merging
sql/item_subselect.h:
  merging
sql/protocol.cc:
  merging
sql/sql_class.h:
  merging
2006-11-16 23:16:44 +04:00

136 lines
2.8 KiB
Text

connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con1;
--disable_warnings
drop table if exists t1,t2;
drop database if exists mysqltest;
--enable_warnings
create temporary table t1(n int not null primary key);
create table t2(n int);
insert into t2 values(3);
let $1=100;
disable_query_log;
while ($1)
{
connection con1;
send replace into t1 select n from t2;
connection con2;
send flush tables;
connection con1;
reap;
connection con2;
reap;
dec $1;
}
enable_query_log;
connection con1;
select * from t1;
connection con2;
flush tables with read lock;
--error 1223
drop table t2;
connection con1;
send drop table t2;
connection con2;
unlock tables;
connection con1;
reap;
#test if drop database will wait until we release the global read lock
connection con1;
create database mysqltest;
create table mysqltest.t1(n int);
insert into mysqltest.t1 values (23);
flush tables with read lock;
connection con2;
send drop database mysqltest;
connection con1;
select * from mysqltest.t1;
unlock tables;
connection con2;
reap;
# test if dirty close releases global read lock
connection con1;
create table t1 (n int);
flush tables with read lock;
dirty_close con1;
connection con2;
insert into t1 values (345);
select * from t1;
drop table t1;
#
# Bug#9459 - deadlock with flush with lock, and lock table write
#
create table t1 (c1 int);
lock table t1 write;
# Cannot get the global read lock with write locked tables.
--error 1192
flush tables with read lock;
lock table t1 read;
# Can get the global read lock with read locked tables.
flush tables with read lock;
--error 1223
lock table t1 write;
lock table t1 read;
--error 1223
lock table t1 write;
# Release all table locks and the global read lock.
unlock tables;
create table t2 (c1 int);
create table t3 (c1 int);
lock table t1 read, t2 read, t3 write;
# Cannot get the global read lock with write locked tables.
--error 1192
flush tables with read lock;
lock table t1 read, t2 read, t3 read;
# Can get the global read lock with read locked tables.
flush tables with read lock;
# Release all table locks and the global read lock.
unlock tables;
drop table t1, t2, t3;
# End of 4.1 tests
#
# Test of deadlock problem when doing FLUSH TABLE with read lock
# (Bug was in NTPL threads in Linux when using different mutex while
# waiting for a condtion variable)
create table t1 (c1 int);
create table t2 (c1 int);
connect (con1,localhost,root,,);
connect (con3,localhost,root,,);
connection con1;
lock table t1 write;
connection con2;
send flush tables with read lock;
--sleep 1
connection con3;
send insert into t2 values(1);
--sleep 1
connection con1;
unlock tables;
disconnect con1;
connection con2;
reap;
disconnect con2;
connection con3;
# It hangs here (insert into t2 does not end).
reap;
disconnect con3;
connection default;
drop table t1, t2;
# End of 5.0 tests