~ubuntu-branches/ubuntu/trusty/mariadb-5.5/trusty-proposed

« back to all changes in this revision

Viewing changes to mysql-test/t/innodb_mysql_sync.test

  • Committer: Package Import Robot
  • Author(s): Otto Kekäläinen
  • Date: 2013-12-22 10:27:05 UTC
  • Revision ID: package-import@ubuntu.com-20131222102705-mndw7s12mz0szrcn
Tags: upstream-5.5.32
Import upstream version 5.5.32

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# Test file for InnoDB tests that require the debug sync facility
 
3
#
 
4
--source include/have_innodb.inc
 
5
--source include/have_debug.inc
 
6
--source include/have_debug_sync.inc
 
7
# Save the initial number of concurrent sessions.
 
8
--source include/count_sessions.inc
 
9
 
 
10
 
 
11
--echo #
 
12
--echo # Bug 42074 concurrent optimize table and 
 
13
--echo # alter table = Assertion failed: thd->is_error()
 
14
--echo #
 
15
 
 
16
--disable_warnings
 
17
DROP TABLE IF EXISTS t1;
 
18
--enable_warnings
 
19
 
 
20
--echo # Create InnoDB table
 
21
CREATE TABLE t1 (id INT) engine=innodb;
 
22
connect (con2, localhost, root);
 
23
 
 
24
--echo # Connection 1
 
25
--echo # Start optimizing table
 
26
connection default;
 
27
SET DEBUG_SYNC='ha_admin_try_alter SIGNAL optimize_started WAIT_FOR table_altered';
 
28
--send OPTIMIZE TABLE t1
 
29
 
 
30
--echo # Connection 2
 
31
--echo # Change table to engine=memory
 
32
connection con2;
 
33
SET DEBUG_SYNC='now WAIT_FOR optimize_started';
 
34
ALTER TABLE t1 engine=memory;
 
35
SET DEBUG_SYNC='now SIGNAL table_altered';
 
36
 
 
37
--echo # Connection 1
 
38
--echo # Complete optimization
 
39
connection default;
 
40
--reap
 
41
 
 
42
disconnect con2;
 
43
DROP TABLE t1;
 
44
SET DEBUG_SYNC='RESET';
 
45
 
 
46
 
 
47
--echo #
 
48
--echo # Bug#47459 Assertion in Diagnostics_area::set_eof_status on
 
49
--echo #           OPTIMIZE TABLE
 
50
--echo #
 
51
 
 
52
--disable_warnings
 
53
DROP TABLE IF EXISTS t1;
 
54
--enable_warnings
 
55
 
 
56
connect (con1, localhost, root);
 
57
connection default;
 
58
 
 
59
CREATE TABLE t1(a INT) ENGINE= InnoDB;
 
60
 
 
61
--echo # Connection con1
 
62
connection con1;
 
63
SET DEBUG_SYNC= "ha_admin_open_ltable SIGNAL opening WAIT_FOR dropped";
 
64
--echo # Sending:
 
65
--send OPTIMIZE TABLE t1
 
66
 
 
67
--echo # Connection default
 
68
connection default;
 
69
SET DEBUG_SYNC= "now WAIT_FOR opening";
 
70
DROP TABLE t1;
 
71
SET DEBUG_SYNC= "now SIGNAL dropped";
 
72
 
 
73
--echo # Connection con1
 
74
connection con1;
 
75
--echo # Reaping: OPTIMIZE TABLE t1
 
76
--reap
 
77
 
 
78
--echo # Connection default
 
79
connection default;
 
80
disconnect con1;
 
81
SET DEBUG_SYNC= "RESET";
 
82
 
 
83
 
 
84
--echo #
 
85
--echo # Bug#53757 assert in mysql_truncate_by_delete
 
86
--echo #
 
87
 
 
88
--disable_warnings
 
89
DROP TABLE IF EXISTS t1, t2;
 
90
--enable_warnings
 
91
 
 
92
CREATE TABLE t1(a INT) Engine=InnoDB;
 
93
CREATE TABLE t2(id INT);
 
94
INSERT INTO t1 VALUES (1), (2);
 
95
 
 
96
connect (con1, localhost, root);
 
97
INSERT INTO t2 VALUES(connection_id());
 
98
SET DEBUG_SYNC= "open_and_process_table SIGNAL opening WAIT_FOR killed";
 
99
--echo # Sending: (not reaped since connection is killed later)
 
100
--send TRUNCATE t1
 
101
 
 
102
connection default;
 
103
SET DEBUG_SYNC= "now WAIT_FOR opening";
 
104
SELECT ((@id := id) - id) FROM t2; 
 
105
KILL @id;
 
106
SET DEBUG_SYNC= "now SIGNAL killed";
 
107
DROP TABLE t1, t2;
 
108
disconnect con1;
 
109
--source include/wait_until_count_sessions.inc
 
110
SET DEBUG_SYNC= "RESET";
 
111
 
 
112
 
 
113
--echo #
 
114
--echo # Bug#58933 Assertion `thd- >is_error()' fails on shutdown with ongoing
 
115
--echo #           OPTIMIZE TABLE
 
116
--echo #
 
117
 
 
118
--disable_warnings
 
119
DROP TABLE IF EXISTS t1;
 
120
--enable_warnings
 
121
 
 
122
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
 
123
INSERT INTO t1 VALUES (1), (2);
 
124
 
 
125
--echo # Connection con1
 
126
connect (con1,localhost,root);
 
127
let $ID= `SELECT connection_id()`;
 
128
SET DEBUG_SYNC= 'ha_admin_open_ltable SIGNAL waiting WAIT_FOR killed';
 
129
--echo # Sending:
 
130
--send OPTIMIZE TABLE t1
 
131
 
 
132
--echo # Connection default
 
133
connection default;
 
134
SET DEBUG_SYNC= 'now WAIT_FOR waiting';
 
135
--replace_result $ID ID
 
136
eval KILL QUERY $ID;
 
137
SET DEBUG_SYNC= 'now SIGNAL killed';
 
138
 
 
139
--echo # Connection con1
 
140
connection con1;
 
141
--echo # Reaping: OPTIMIZE TABLE t1
 
142
--reap
 
143
 
 
144
--echo # Connection default
 
145
connection default;
 
146
DROP TABLE t1;
 
147
SET DEBUG_SYNC= 'RESET';
 
148
disconnect con1;
 
149
 
 
150
 
 
151
--echo #
 
152
--echo # Bug#42230 during add index, cannot do queries on storage engines
 
153
--echo #           that implement add_index
 
154
--echo #
 
155
 
 
156
--disable_warnings
 
157
DROP DATABASE IF EXISTS db1;
 
158
DROP TABLE IF EXISTS t1;
 
159
--enable_warnings
 
160
 
 
161
connect(con1,localhost,root);
 
162
connect(con2,localhost,root);
 
163
 
 
164
--echo # Test 1: Secondary index, should not block reads (original test case).
 
165
 
 
166
--echo # Connection default
 
167
connection default;
 
168
CREATE DATABASE db1;
 
169
CREATE TABLE db1.t1(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value INT) engine=innodb;
 
170
INSERT INTO db1.t1(value) VALUES (1), (2);
 
171
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
 
172
--echo # Sending:
 
173
--send ALTER TABLE db1.t1 ADD INDEX(value)
 
174
 
 
175
--echo # Connection con1
 
176
connection con1;
 
177
SET DEBUG_SYNC= "now WAIT_FOR manage";
 
178
# Neither of these two statements should be blocked
 
179
USE db1;
 
180
SELECT * FROM t1;
 
181
SET DEBUG_SYNC= "now SIGNAL query";
 
182
 
 
183
--echo # Connection default
 
184
connection default;
 
185
--echo # Reaping: ALTER TABLE db1.t1 ADD INDEX(value)
 
186
--reap
 
187
DROP DATABASE db1;
 
188
 
 
189
--echo # Test 2: Primary index (implicit), should block reads.
 
190
 
 
191
CREATE TABLE t1(a INT NOT NULL, b INT NOT NULL) engine=innodb;
 
192
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
 
193
--echo # Sending:
 
194
--send ALTER TABLE t1 ADD UNIQUE INDEX(a)
 
195
 
 
196
--echo # Connection con1
 
197
connection con1;
 
198
SET DEBUG_SYNC= "now WAIT_FOR manage";
 
199
USE test;
 
200
--echo # Sending:
 
201
--send SELECT * FROM t1
 
202
 
 
203
--echo # Connection con2
 
204
connection con2;
 
205
--echo # Waiting for SELECT to be blocked by the metadata lock on t1
 
206
let $wait_condition= SELECT COUNT(*)= 1 FROM information_schema.processlist
 
207
  WHERE state= 'Waiting for table metadata lock'
 
208
  AND info='SELECT * FROM t1';
 
209
--source include/wait_condition.inc
 
210
SET DEBUG_SYNC= "now SIGNAL query";
 
211
 
 
212
--echo # Connection default
 
213
connection default;
 
214
--echo # Reaping: ALTER TABLE t1 ADD UNIQUE INDEX(a)
 
215
--reap
 
216
 
 
217
--echo # Connection con1
 
218
connection con1;
 
219
--echo # Reaping: SELECT * FROM t1
 
220
--reap
 
221
 
 
222
--echo # Test 3: Primary index (explicit), should block reads.
 
223
 
 
224
--echo # Connection default
 
225
connection default;
 
226
ALTER TABLE t1 DROP INDEX a;
 
227
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
 
228
--echo # Sending:
 
229
--send ALTER TABLE t1 ADD PRIMARY KEY (a)
 
230
 
 
231
--echo # Connection con1
 
232
connection con1;
 
233
SET DEBUG_SYNC= "now WAIT_FOR manage";
 
234
--echo # Sending:
 
235
--send SELECT * FROM t1
 
236
 
 
237
--echo # Connection con2
 
238
connection con2;
 
239
--echo # Waiting for SELECT to be blocked by the metadata lock on t1
 
240
let $wait_condition= SELECT COUNT(*)= 1 FROM information_schema.processlist
 
241
  WHERE state= 'Waiting for table metadata lock'
 
242
  AND info='SELECT * FROM t1';
 
243
--source include/wait_condition.inc
 
244
SET DEBUG_SYNC= "now SIGNAL query";
 
245
 
 
246
--echo # Connection default
 
247
connection default;
 
248
--echo # Reaping: ALTER TABLE t1 ADD PRIMARY KEY (a)
 
249
--reap
 
250
 
 
251
--echo # Connection con1
 
252
connection con1;
 
253
--echo # Reaping: SELECT * FROM t1
 
254
--reap
 
255
 
 
256
--echo # Test 4: Secondary unique index, should not block reads.
 
257
 
 
258
--echo # Connection default
 
259
connection default;
 
260
SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query";
 
261
--echo # Sending:
 
262
--send ALTER TABLE t1 ADD UNIQUE (b)
 
263
 
 
264
--echo # Connection con1
 
265
connection con1;
 
266
SET DEBUG_SYNC= "now WAIT_FOR manage";
 
267
SELECT * FROM t1;
 
268
SET DEBUG_SYNC= "now SIGNAL query";
 
269
 
 
270
--echo # Connection default
 
271
connection default;
 
272
--echo # Reaping: ALTER TABLE t1 ADD UNIQUE (b)
 
273
--reap
 
274
 
 
275
disconnect con1;
 
276
disconnect con2;
 
277
SET DEBUG_SYNC= "RESET";
 
278
DROP TABLE t1;
 
279
 
 
280
 
 
281
--echo #
 
282
--echo # Bug#11853126 RE-ENABLE CONCURRENT READS WHILE CREATING SECONDARY INDEX
 
283
--echo #              IN INNODB
 
284
--echo #
 
285
 
 
286
--disable_warnings
 
287
DROP TABLE IF EXISTS t1;
 
288
--enable_warnings
 
289
 
 
290
CREATE TABLE t1(a INT NOT NULL, b INT NOT NULL) engine=innodb;
 
291
INSERT INTO t1 VALUES (1, 12345), (2, 23456);
 
292
 
 
293
--echo # Connection con1
 
294
--connect (con1,localhost,root)
 
295
SET SESSION debug_dbug= "+d,alter_table_rollback_new_index";
 
296
--error ER_UNKNOWN_ERROR
 
297
ALTER TABLE t1 ADD PRIMARY KEY(a);
 
298
SELECT * FROM t1;
 
299
 
 
300
--echo # Connection default
 
301
--connection default
 
302
SELECT * FROM t1;
 
303
DROP TABLE t1;
 
304
disconnect con1;
 
305
 
 
306
 
 
307
# Check that all connections opened by test cases in this file are really
 
308
# gone so execution of other tests won't be affected by their presence.
 
309
--source include/wait_until_count_sessions.inc