~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
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;
64
65
#
66
# Bug#9459 - deadlock with flush with lock, and lock table write
67
#
68
create table t1 (c1 int);
69
lock table t1 write;
70
# Cannot get the global read lock with write locked tables.
71
--error 1192
72
flush tables with read lock;
73
lock table t1 read;
74
# Can get the global read lock with read locked tables.
75
flush tables with read lock;
76
--error 1223
77
lock table t1 write;
78
lock table t1 read;
79
--error 1223
80
lock table t1 write;
81
# Release all table locks and the global read lock.
82
unlock tables;
83
create table t2 (c1 int);
84
create table t3 (c1 int);
85
lock table t1 read, t2 read, t3 write;
86
# Cannot get the global read lock with write locked tables.
87
--error 1192
88
flush tables with read lock;
89
lock table t1 read, t2 read, t3 read;
90
# Can get the global read lock with read locked tables.
91
flush tables with read lock;
92
# Release all table locks and the global read lock.
93
unlock tables;
94
drop table t1, t2, t3;
95
96
# End of 4.1 tests
97
98
#
99
# Test of deadlock problem when doing FLUSH TABLE with read lock
100
# (Bug was in NTPL threads in Linux when using different mutex while
101
#  waiting for a condtion variable)
102
103
create table t1 (c1 int);
104
create table t2 (c1 int);
105
106
connect (con1,localhost,root,,);
107
connect (con3,localhost,root,,);
108
109
connection con1;
110
lock table t1 write;
111
112
connection con2;
113
send flush tables with read lock;
114
--sleep 1
115
116
connection con3;
117
send insert into t2 values(1);
118
--sleep 1
119
120
connection con1;
121
unlock tables;
122
disconnect con1;
123
124
connection con2;
125
reap;
126
disconnect con2;
127
128
connection con3;
129
# It hangs here (insert into t2 does not end).
130
reap;
131
disconnect con3;
132
133
connection default;
134
drop table t1, t2;
135
136
#
137
# Bug#32528 Global read lock with a low priority write lock causes a server crash
138
#
139
140
--disable_warnings
141
drop table if exists t1, t2;
142
--enable_warnings
143
144
set session low_priority_updates=1;
145
146
create table t1 (a int);
147
create table t2 (b int);
148
149
lock tables t1 write;
150
--error ER_LOCK_OR_ACTIVE_TRANSACTION
151
flush tables with read lock;
152
unlock tables;
153
154
lock tables t1 read, t2 write;
155
--error ER_LOCK_OR_ACTIVE_TRANSACTION
156
flush tables with read lock;
157
unlock tables;
158
159
lock tables t1 read;
160
flush tables with read lock;
161
unlock tables;
162
163
drop table t1, t2;
164
165
set session low_priority_updates=default;
166
167
#
168
# Bug #33334 mysqltest_embedded crashes when disconnecting before reap
169
#
170
171
connect (con1,localhost,root,,);
172
send select benchmark(200, (select sin(1))) > 1000;
173
disconnect con1;
174
connection default;
175
176
--echo End of 5.0 tests
177
178
#
179
# Bug #26380: LOCK TABLES + FLUSH LOGS causes deadlock
180
#
181
set @old_general_log= @@general_log;
182
set @old_read_only= @@read_only;
183
set global general_log= on;
184
185
flush tables with read lock;
186
flush logs;
187
unlock tables;
188
189
set global read_only=1;
190
flush logs;
191
unlock tables;
192
193
flush tables with read lock;
194
flush logs;
195
unlock tables;
196
197
set global general_log= @old_general_log;
198
set global read_only= @old_read_only;
199
200
--echo End of 5.1 tests