~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
connect (con1,localhost,root,,);
2
connect (con2,localhost,root,,);
3
connection con1;
4
5
--disable_warnings
6
drop table if exists t1,t2;
7
drop database if exists mysqltest;
8
--enable_warnings
9
10
create temporary table t1(n int not null primary key);
11
create table t2(n int);
12
insert into t2 values(3);
13
let $1=100;
14
disable_query_log;
15
while ($1)
16
{
17
 connection con1;
18
 send replace into t1 select n from t2;
19
 connection con2;
20
 send flush tables;
21
 connection con1;
22
 reap;
23
 connection con2;
24
 reap;
25
 dec $1;
26
}
27
enable_query_log;
28
connection con1;
29
select * from t1;
30
connection con2;
31
flush tables with read lock;
32
--error 1223
33
drop table t2;
34
connection con1;
35
send drop table t2;
36
connection con2;
37
unlock tables;
38
connection con1;
39
reap;
40
41
#test if drop database will wait until we release the global read lock
42
connection con1;
43
create database mysqltest;
44
create table mysqltest.t1(n int);
45
insert into mysqltest.t1 values (23);
46
flush tables with read lock;
47
connection con2;
48
send drop database mysqltest;
49
connection con1;
50
select * from mysqltest.t1;
51
unlock tables;
52
connection con2;
53
reap;
54
718 by Brian Aker
Fix for FLUSH TABLE WITH READ LOCK
55
## test if dirty close releases global read lock
56
#connection con1;
57
#create table t1 (n int);
58
#flush tables with read lock;
59
#dirty_close con1;
60
#connection con2;
61
#insert into t1 values (345);
62
#select * from t1;
63
#drop table t1;
1 by brian
clean slate
64
65
# End of 4.1 tests
66
67
#
68
# Test of deadlock problem when doing FLUSH TABLE with read lock
69
# (Bug was in NTPL threads in Linux when using different mutex while
70
#  waiting for a condtion variable)
71
72
create table t1 (c1 int);
73
create table t2 (c1 int);
74
75
connect (con3,localhost,root,,);
76
77
connection con1;
78
79
connection con2;
80
send flush tables with read lock;
81
--sleep 1
82
83
connection con3;
84
send insert into t2 values(1);
85
--sleep 1
86
87
connection con1;
88
unlock tables;
89
disconnect con1;
90
91
connection con2;
92
reap;
93
disconnect con2;
94
95
connection con3;
96
# It hangs here (insert into t2 does not end).
97
reap;
98
disconnect con3;
99
100
connection default;
101
drop table t1, t2;
102
103
#
104
# Bug #33334 mysqltest_embedded crashes when disconnecting before reap
105
#
106
107
connect (con1,localhost,root,,);
108
send select benchmark(200, (select sin(1))) > 1000;
109
disconnect con1;
110
connection default;
111
112
--echo End of 5.0 tests
113